3.7 KiB
id, title, challengeType, forumTopicId, dashedName
id | title | challengeType | forumTopicId | dashedName |
---|---|---|---|---|
9d7123c8c441eeafaeb5bdef | Видалення елементів з масиву з використанням slice замість splice | 1 | 301236 | remove-elements-from-an-array-using-slice-instead-of-splice |
--description--
Загальним шаблоном під час роботи з масивами є те, коли ви хочете видалити елементи й зберегти решту масиву. JavaScript пропонує для цього метод « splice
», який приймає аргументи для індексу, де саме починати видаляти елементи, а тоді — їх кількість. Якщо другий аргумент не було надано, то, за замовчуванням, елементи видаляються до кінця. Щоправда, метод «splice
» змінює оригінальний масив, у якому викликається. Ось приклад:
const cities = ["Chicago", "Delhi", "Islamabad", "London", "Berlin"];
cities.splice(3, 1);
Тут splice
повертає рядок London
і видаляє його із масиву міст. cities
матимуть значення ["Chicago", "Delhi", "Islamabad", "Berlin"]
.
Як ми могли бачити у останньому завдання, метод «slice
» не змінює вихідного масиву, але повертає новий, який може бути збережений як змінний. Пригадайте, що метод «slice
» використовує два аргументи для того, щоб індекси почали та закінчили slice (кінець не включається); і повертає ці елементи у новий масив. Використання методу «slice
» замість «splice
» допомагає уникнути будь-яких побічних дій зміни масиву.
--instructions--
Перепишіть функцію nonMutatingSplice
, використовуючи slice
замість splice
. Він мусить обмежити наданий масив cities
до довжини 3, і повернути новий масив лише із першими трьома елементами.
Не змінюйте вихідний масив, наданий функцією.
--hints--
Використовуйте метод «slice
» у своєму коді.
assert(code.match(/\.slice/g));
Не використовуйте метод «splice
» у своєму коді.
assert(!code.match(/\.?[\s\S]*?splice/g));
Масив inputCities
не повинен змінюватись.
assert(
JSON.stringify(inputCities) ===
JSON.stringify(['Chicago', 'Delhi', 'Islamabad', 'London', 'Berlin'])
);
nonMutatingSplice(["Chicago", "Delhi", "Islamabad", "London", "Berlin"])
повинен повертатися як ["Chicago", "Delhi", "Islamabad"]
.
assert(
JSON.stringify(
nonMutatingSplice(['Chicago', 'Delhi', 'Islamabad', 'London', 'Berlin'])
) === JSON.stringify(['Chicago', 'Delhi', 'Islamabad'])
);
--seed--
--seed-contents--
function nonMutatingSplice(cities) {
// Only change code below this line
return cities.splice(3);
// Only change code above this line
}
const inputCities = ["Chicago", "Delhi", "Islamabad", "London", "Berlin"];
nonMutatingSplice(inputCities);
--solutions--
function nonMutatingSplice(cities) {
return cities.slice(0,3);
}
const inputCities = ["Chicago", "Delhi", "Islamabad", "London", "Berlin"];