我为我的Angular应用程序创建了一个随机报价生成器。该组件的代码如下所示:使JavaScript随机报价生成器每天生成一个报价
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();
但我将如何计算时,以一周的变化一天火了一个新的实例?
你为什么要在客户端上做这件事?只需在服务器上执行一次,每天一次。 – RobG
公平点。这将工作。但我仍然很好奇在客户端如何做到这一点。比如说,当你访问一个你可以读取的API(用于获取引号)时,但仅此而已。 – Muirik
也许通过使用PRNG并采用今天'Math.floor(Date.now()/ 864e5)'种子的时间戳。因此我可以创建一个“随机”数字的可重复序列,例如洗牌这个数组,或者获取一个索引......或者更简单一些,比如'index =(Date.now()/ 864e5^0xa702fa)%数组。长度' – Thomas