2016-10-09 4 views
0

Ich arbeite an der Erstellung einer Wettervorhersage Web-App. Ich habe Schwierigkeiten, die Wochentage der kommenden Vorhersage zuzuordnen. Ab jetzt, wenn ich durch das Array fahre, zählt die Schleife bis 6 (Samstag), und das zählt weiter 7, 8, 9, 10 ... und so weiter. Ich muss einen Weg finden, diese Schleife zurückzusetzen, so dass nach 6 wieder bei 0 (Sonntag) begonnen wird. Ich weiß, dass die Lösung dafür einfach sein sollte, aber ich kann es nicht sehen. Dies ist mein Versuch, so weit ...Recycling durch ein Array - JavaScript

function dayOfWeek() { 
    var weekdays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; 
    var today = new Date().getDay(); 

    if (today === 6) { 
    today = 0; 
    } 

    for (var i=0; i<5; i++) { 
    console.log(today + i); 
    } 
    } 

dayOfWeek() 

}); 

Antwort

1

Sie können die Modulo-Operator (%) wie folgt:

for (var i = 0; i < 5; i++) { 
    console.log((today + i) % 7); 
} 

Der Modulo-Operator gibt den Rest einer Division zwischen den beiden Operanden, 3 % 2 wird 1 zurückgeben, weil 3/2 ist 1 und Hälfte.

In ähnlicher Weise gibt 9% 7 2 zurück, weil das Ergebnis 1 und Siebtel ist.

Dies ermöglicht es Ihnen, durch das Array so oft wie Sie wollen, Sie modulo nur die Länge des Arrays.

+0

'1 und 1 half.',' 1 und 2 Siebtel 'das ist nicht wirklich der Rest, den Sie bekommen - mit ganzzahligen Division haben Sie _have_ keine rationalen Zahlen '7% 3' wird nicht" zwei und ein Drittel "es erzeugt die Zahl' 2' (weil '2 * 3 = 6' und Sie können nicht mehr' 3' in eine '7' passen) und der Rest ist' 1' abgeleitet von '7 (Grundbetrag) - 6 (wie viele Teiler "passen" in die Basisnummer) = 1 (was ungeteilt bleibt) ' – vlaz

+0

7% 3 ist 1, weil das Ergebnis der Division * ist * 2 und 1 Drittel, obwohl ... Auch wenn JS keinen genauen Weg hat diese Zahl darzustellen. Auch ist mein Weg etwas einfacher, einem Anfänger zu erklären, wenn auch nicht 100% genau. –

+0

Nein, ganzzahlige Division hat keine Brüche, wie ich schon sagte. Es gibt kein "Drittel" mehr. In der Tat ist es nicht einmal "einfacher" für Anfänger, wenn man bedenkt, dass dies in Schulen gelehrt wird, bevor ganze Zahlen eingeführt werden. Kinder sind in der Lage, Reste zu berechnen, bevor sie überhaupt wissen, was "ein Drittel" bedeutet, denn es ist sehr, sehr einfach - es ist buchstäblich im Namen - was ist die Zahl, die übrigbleibt, nachdem du dich durch etwas geteilt hast. Wenn Sie bereits ein Drittel haben, ist das bereits geteilt durch die Nummer, es wird nicht mehr geteilt. – vlaz