Files
freeCodeCamp/curriculum/challenges/ukrainian/02-javascript-algorithms-and-data-structures/functional-programming/remove-elements-from-an-array-using-slice-instead-of-splice.md
2023-01-23 10:14:46 -06:00

3.5 KiB
Raw Blame History

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 замість 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"];