2.6 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 587d7b8a367417b2b2512b4c | Destrukturierung über Rest-Elemente | 1 | 301218 | use-destructuring-assignment-with-the-rest-parameter-to-reassign-array-elements |
--description--
In manchen Situationen, in denen es um die Destrukturierung von Arrays geht, möchten wir vielleicht die restlichen Elemente in einem separaten Array sammeln.
Das Ergebnis ist ähnlich wie bei Array.prototype.slice(), wie unten gezeigt:
const [a, b, ...arr] = [1, 2, 3, 4, 5, 7];
console.log(a, b);
console.log(arr);
Die Konsole würde die Werte 1, 2 und [3, 4, 5, 7] anzeigen.
Die Variablen a und b entnehmen den ersten und zweiten Wert aus dem Array. Danach erhält arr aufgrund des Vorhandenseins der Rest-Syntax die restlichen Werte in Form eines Arrays. Das Rest-Element funktioniert nur als letzte Variable in der Liste richtig. Das bedeutet, dass du die Rest-Syntax nicht verwenden kannst, um ein Subarray zu erfassen, das das letzte Element des ursprünglichen Arrays auslässt.
--instructions--
Verwende eine Destrukturierungszuweisung mit der Rest-Syntax, um das Verhalten von Array.prototype.slice() zu emulieren. removeFirstTwo() sollte ein Subarray des ursprünglichen Arrays list zurückgeben, wobei die ersten beiden Elemente weggelassen werden.
--hints--
removeFirstTwo([1, 2, 3, 4, 5]) sollte [3, 4, 5] ergeben
const testArr_ = [1, 2, 3, 4, 5];
const testArrWORemoved_ = removeFirstTwo(testArr_);
assert(testArrWORemoved_.every((e, i) => e === i + 3) && testArrWORemoved_.length === 3);
removeFirstTwo() sollte list nicht verändern
const testArr_ = [1, 2, 3, 4, 5];
const testArrWORemoved_ = removeFirstTwo(testArr_);
assert(testArr_.every((e, i) => e === i + 1) && testArr_.length === 5);
Array.slice() sollte nicht verwendet werden.
(getUserInput) => assert(!getUserInput('index').match(/slice/g));
Die Destrukturierung auf list sollte verwendet werden.
assert(
__helpers
.removeWhiteSpace(code)
.match(/\[(([_$a-z]\w*)?,){1,}\.\.\.shorterList\]=list/i)
);
--seed--
--seed-contents--
function removeFirstTwo(list) {
// Only change code below this line
const shorterList = list; // Change this line
// Only change code above this line
return shorterList;
}
const source = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const sourceWithoutFirstTwo = removeFirstTwo(source);
--solutions--
function removeFirstTwo(list) {
const [, , ...shorterList] = list;
return shorterList;
}
const source = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const sourceWithoutFirstTwo = removeFirstTwo(source);