Kopieren mit Spread
filter() und map() erstellen neue Arrays, aber sort() ändert das Array selbst. Manchmal ist das ein Problem, weil die ursprüngliche Reihenfolge verloren geht:
const temperaturen = [18, 23, 25, 19, 22];
const sortiert = temperaturen.sort((a, b) => a - b);
console.log(sortiert);
console.log(temperaturen);[18, 19, 22, 23, 25]
[18, 19, 22, 23, 25]sort() gibt das Array zurück, das es sortiert hat: dasselbe Array, kein neues. sortiert und temperaturen sind zwei Namen für ein Array, und du kannst nicht mehr erkennen, welcher Tag welche Temperatur hatte. Um das Original zu behalten, sortiere eine Kopie. Die erstellst du mit drei Punkten, genannt Spread: [...temperaturen] ist ein neues Array mit allen Elementen von temperaturen.
const temperaturen = [18, 23, 25, 19, 22];
const sortiert = [...temperaturen].sort((a, b) => a - b);
console.log(sortiert);
console.log(temperaturen);[18, 19, 22, 23, 25]
[18, 23, 25, 19, 22]Jetzt sortiert sort() nur die Kopie. Mit Spread kannst du auch mehrere Arrays in eines packen, zum Beispiel die Tiere, die vormittags gefüttert wurden, und die, die nachmittags gefüttert wurden, und du kannst weitere Elemente drumherum hinzufügen:
const vormittags = ["Ella", "Leo"];
const nachmittags = ["Gina", "Pip"];
const heuteGefuettert = [...vormittags, ...nachmittags, "Max"];
console.log(heuteGefuettert);["Ella", "Leo", "Gina", "Pip", "Max"]Die drei Punkte funktionieren auch mit Objekten, in geschweiften Klammern. { ...leo } ist eine Kopie des Objekts leo, und die Eigenschaften, die du danach schreibst, ändern die Kopie, nicht das Original:
const leo = { name: "Leo", art: "Löwe", alter: 6 };
const aelterLeo = { ...leo, alter: 7 };
console.log(aelterLeo);
console.log(leo);{ name: "Leo", art: "Löwe", alter: 7 }
{ name: "Leo", art: "Löwe", alter: 6 }Ein typischer Fehler ist, mit = zu kopieren. const kopie = temperaturen; erstellt kein neues Array, sondern gibt demselben Array nur einen zweiten Namen. Also sortiert kopie.sort() auch temperaturen. Bei Objekten ist es genauso.
So schreibst du es:
Anweisungen
- 1
Erstelle mit Spread eine Konstante
beideWochen: die Temperaturen der letzten Woche, gefolgt von denen dieser Woche, in einem Array. Gib sie aus:[18, 21, 24, 19, 23, 17, 9, 25, 16, 20]. - 2
Erstelle
sortiert, eine sortierte Kopie vonbeideWochen, beginnend mit der kältesten Temperatur. Gib dann die kälteste und die wärmste Temperatur aus:Kälteste: 9undWärmste: 25. - 3
Gib darunter
beideWochennoch einmal aus. Die Temperaturen müssen weiterhin in der Reihenfolge der Tage stehen, wie in der ersten Zeile.