J'ai créé un générateur de devis aléatoire pour mon application Angular. Le code du composant ressemble à ceci:Faire une citation aléatoire Générateur seulement Générer un devis par jour
qotd = this.quotes[Math.floor(Math.random() * this.quotes.length)];
C'est tirant à partir des données qui ressemble à ceci:
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'
},
];
Et puis, à mon avis, je le fais:
<div class="quotes">
<p class="quote">
{{qotd.quote}} <br><br>
~ {{qotd.author}}
</p>
</div>
La chose est, En ce moment, cela va générer une nouvelle citation chaque fois que le composant se recharge, ce qui peut être plusieurs fois au sein d'une même session. Ce que je réalise maintenant serait mieux d'en faire un générateur de devis quotidien. Donc, cela ne générerait un nouveau devis que si la date change. Quelle est la manière la plus simple d'implémenter quelque chose comme ça? Il est assez facile de générer la date et le jour de la semaine, comme ceci:
date = new Date();
dayNumber = this.date.getDay();
Mais comment pourrais-je calculer quand le jour de la semaine change afin de déclencher une nouvelle instance?
Pourquoi faites-vous cela sur le client? Faites-le sur le serveur, une fois par jour. – RobG
Fair point. Ça marcherait. Mais je suis toujours curieux de savoir comment on ferait cela du côté client. Dites, par exemple, quand vous accédiez à une API que vous pouviez lire (pour obtenir les guillemets), mais c'est tout. – Muirik
peut-être en utilisant un PRNG et prendre l'horodateur d'aujourd'hui 'Math.floor (Date.now()/864e5)' la graine. par conséquent je peux gerer une séquence reproductible de nombres "aléatoires", comme mélanger ce tableau, ou aller chercher un index, ... ou quelque chose de plus simple, comme 'index = (Date.now()/864e5^0xa702fa)% array. longueur – Thomas