Stworzyłem generator losowych ofert dla mojej aplikacji Angular. Kod komponent wygląda następująco:Twórz JavaScript Random Generator ofert Wygeneruj tylko jeden cytat dziennie
qotd = this.quotes[Math.floor(Math.random() * this.quotes.length)];
To się ciągnie od danych, które wygląda następująco:
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'
},
];
i wtedy moim zdaniem to zrobić:
<div class="quotes">
<p class="quote">
{{qotd.quote}} <br><br>
~ {{qotd.author}}
</p>
</div>
Chodzi o to, teraz wygeneruje nową ofertę za każdym razem, gdy składnik zostanie ponownie załadowany, co może nastąpić wiele razy w ciągu jednej sesji. Teraz zdaję sobie sprawę, że lepiej byłoby uczynić z tego generator codziennych cytatów. Tak więc wygenerowałby nowy cytat tylko wtedy, gdy data się zmieni. Jaki jest najprostszy sposób wdrożenia czegoś takiego? Jest to dość łatwe do wygenerowania datę i dzień tygodnia, tak:
date = new Date();
dayNumber = this.date.getDay();
Ale jak bym obliczyć kiedy dzień tygodnia zmienia się, aby wystrzelić nową instancję?
Dlaczego robisz to na kliencie? Po prostu rób to na serwerze, raz dziennie. – RobG
Punkt targów. To powinno działać. Ale nadal jestem ciekawy, jak można to zrobić po stronie klienta. Powiedzmy, na przykład, kiedy uzyskiwałeś dostęp do API, z którego możesz czytać (w celu uzyskania cytatów), ale to wszystko. – Muirik
może za pomocą PRNG i wziąć sygnaturę czasową dzisiaj 'Math.floor (Date.now()/864e5)' nasienie. w związku z tym mogę uzyskać powtarzalną sekwencję liczb "losowych", takich jak przetasowanie tej tablicy lub pobranie indeksu, ... lub czegoś prostszego, jak tablica% = index = (Date.now()/864e5^0xa702fa). length' – Thomas