freeCodeCamp/curriculum/challenges/german/02-javascript-algorithms-an.../es6/use-the-spread-operator-to-...

2.1 KiB

id title challengeType forumTopicId dashedName
587d7b89367417b2b2512b48 Verwende den Spread-Operator, um Arrays an Ort und Stelle auszuwerten 1 301222 use-the-spread-operator-to-evaluate-arrays-in-place

--description--

ES6 führt den Spread-Operator ein, mit dem wir Arrays und andere Ausdrücke an Stellen erweitern können, an denen mehrere Parameter oder Elemente erwartet werden.

Der folgende ES5-Code verwendet apply(), um den maximalen Wert in einem Array zu berechnen:

var arr = [6, 89, 3, 45];
var maximus = Math.max.apply(null, arr);

maximus hätte dann einen Wert von 89.

Wir mussten Math.max.apply(null, arr) verwenden, weil Math.max(arr) NaN zurückgibt. Math.max() erwartet kommagetrennte Argumente, aber kein Array. Durch den Spread-Operator lässt sich diese Syntax viel besser lesen und pflegen.

const arr = [6, 89, 3, 45];
const maximus = Math.max(...arr);

maximus hätte dann einen Wert von 89.

...arr gibt ein ungepacktes Array zurück. Mit anderen Worten, es spreizt das Feld. Der Spread-Operator funktioniert jedoch nur an Ort und Stelle, z. B. in einem Argument einer Funktion oder in einem Array-Literal. Der folgende Code wird nicht funktionieren:

const spreaded = ...arr;

--instructions--

Kopiere alle Inhalte von arr1 in ein anderes Array arr2, indem du den Spread-Operator benutzt.

--hints--

arr2 sollte eine korrekte Kopie von arr1 sein.

assert(arr2.every((v, i) => v === arr1[i]) && arr2.length);

Der ... Spread-Operator sollte verwendet werden, um arr1 zu duplizieren.

assert(code.match(/Array\(\s*\.\.\.arr1\s*\)|\[\s*\.\.\.arr1\s*\]/));

arr2 sollte unverändert bleiben, wenn arr1 geändert wird.

assert((arr1, arr2) => {
  arr1.push('JUN');
  return arr2.length < arr1.length;
});

--seed--

--seed-contents--

const arr1 = ['JAN', 'FEB', 'MAR', 'APR', 'MAY'];
let arr2;

arr2 = [];  // Change this line

console.log(arr2);

--solutions--

const arr1 = ['JAN', 'FEB', 'MAR', 'APR', 'MAY'];
let arr2;

arr2 = [...arr1];