【发布时间】:2017-10-12 22:28:18
【问题描述】:
我为我的 Angular 应用程序创建了一个随机报价生成器。组件代码如下所示:
qotd = this.quotes[Math.floor(Math.random() * this.quotes.length)];
这是从如下所示的数据中提取的:
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'
},
];
然后在我看来,我会这样做:
<div class="quotes">
<p class="quote">
{{qotd.quote}} <br><br>
~ {{qotd.author}}
</p>
</div>
问题是,现在每次重新加载组件时都会生成一个新报价,这可能在一个会话中多次。我现在意识到更好的是让它成为每日报价生成器。因此,如果日期更改,它只会生成新的报价。实现这样的事情的最简单方法是什么?生成日期和星期几很容易,如下所示:
date = new Date();
dayNumber = this.date.getDay();
但是我将如何计算一周中的某一天何时更改以启动新实例?
【问题讨论】:
-
你为什么要在客户端这样做?只需在服务器上执行,每天一次。
-
公平点。那会奏效。但我仍然很好奇如何在客户端做到这一点。例如,当您访问可以读取的 API 时(用于获取引号),仅此而已。
-
也许通过使用 PRNG 并获取今天的时间戳
Math.floor(Date.now() / 864e5)种子。因此我可以生成一个可重复的“随机”数字序列,比如随机排列这个数组,或者获取一个索引,......或者更简单的东西,比如index = (Date.now() / 864e5 ^ 0xa702fa) % array.length -
数学。 random() 不是随机的。
标签: javascript angular date typescript random