Tôi đã tạo trình tạo trích dẫn ngẫu nhiên cho ứng dụng Angular của mình. Mã thành phần trông như thế này:Tạo Trình tạo trích dẫn ngẫu nhiên bằng JavaScript Chỉ tạo một trích dẫn mỗi ngày
qotd = this.quotes[Math.floor(Math.random() * this.quotes.length)];
Đó là kéo từ dữ liệu mà trông như thế này:
quotes = [
{
quote: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus euismod magna magna, euismod tincidunt libero dignis.",
author: 'Sorato Violasa'
},
{
quote: "Nullam dignissim accumsan magna vitae rhoncus. Phasellus euismod magna magna, euismod tincidunt libero dignis.",
author: 'Vito Dignaora'
},
{
quote: "In tincidunt imperdiet augue, quis sollicitudin mi tincidunt ut.",
author: 'Hivalo Amettioa'
},
{
quote: "hasellus accumsan erat vitae enim blandit, quis euismod ipsum sollicitudin.",
author: 'Grasha Plojiva'
},
];
Và sau đó theo quan điểm của tôi, tôi làm điều này:
<div class="quotes">
<p class="quote">
{{qotd.quote}} <br><br>
~ {{qotd.author}}
</p>
</div>
Có điều là, ngay bây giờ điều này sẽ tạo ra một báo giá mới mỗi lần tải lại thành phần, có thể nhiều lần trong một phiên duy nhất. Những gì tôi nhận ra bây giờ sẽ là tốt hơn là để làm cho một máy phát điện báo giá hàng ngày. Vì vậy, nó sẽ chỉ tạo ra một báo giá mới nếu ngày thay đổi. Cách đơn giản nhất để thực hiện một cái gì đó như thế này là gì? Thật dễ dàng đủ để tạo ra ngày và ngày trong tuần, như thế này:
date = new Date();
dayNumber = this.date.getDay();
Nhưng làm thế nào tôi sẽ tính toán khi ngày của những thay đổi trong tuần để bắn ra một trường hợp mới?
Tại sao bạn làm điều này trên ứng dụng khách? Chỉ cần làm điều đó trên máy chủ, một lần mỗi ngày. – RobG
Điểm công bằng. Rằng sẽ làm việc. Nhưng tôi vẫn tò mò làm thế nào người ta sẽ làm điều này ở phía khách hàng. Ví dụ, khi bạn truy cập một API mà bạn có thể đọc (để nhận được các dấu ngoặc kép), nhưng đó là tất cả. – Muirik
có thể bằng cách sử dụng PRNG và lấy dấu thời gian của ngày hôm nay 'Math.floor (Date.now()/864e5)' hạt giống. do đó tôi có thể gereate một chuỗi lặp lại của "ngẫu nhiên" con số, như để trộn lẫn mảng này, hoặc để lấy một chỉ mục, ... hoặc một cái gì đó đơn giản, giống như 'index = (Date.now()/864e5^0xa702fa)% mảng. length' – Thomas