freeCodeCamp/curriculum/challenges/russian/02-javascript-algorithms-and-data-structures/functional-programming/remove-elements-from-an-array-using-slice-instead-of-splice.russian.md

4.1 KiB
Raw Blame History

id, title, challengeType, forumTopicId, localeTitle
id title challengeType forumTopicId localeTitle
9d7123c8c441eeafaeb5bdef Remove Elements from an Array Using slice Instead of splice 1 301236 Удаление элементов из массива используя slice вместо splice

Description

Обычный случай при работе с массивами - это когда вы хотите удалить элементы и сохранить остальную часть массива. Для этого JavaScript предлагает метод splice, который принимает индекс того, где следует начинать удаление элементов, и количество элементов для удаления. Если второй аргумент не указан, по умолчанию удаляются элементы до конца массива. Однако метод splice мутирует исходный массив, на котором он вызывается. Вот пример:
var cities = ["Чикаго", "Дели", "Исламабад", "Лондон", "Берлин"];
cities.splice (3, 1); // Возвращает «Лондон» и удаляет его из массива городов
// города теперь [«Чикаго», «Дели», «Исламабад», «Берлин»]
Как мы видели в последней задаче, метод slice не мутирует исходный массив, а возвращает новый, который можно сохранить в переменной. Напомним, что метод slice принимает два аргумента - индексы начала и канца среза (конец не включен) и возвращает эти элементы в новом массиве. Использование метода slice вместо splice помогает избежать любых побочных эффектов, связанных с массивом.

Instructions

Перепишите функцию nonMutatingSplice , используя slice вместо splice . Он должен ограничивать массив предоставленных cities длиной до 3 и возвращать новый массив только с первыми тремя элементами. Не мутируйте исходный массив, предоставленный функции.

Tests

tests:
  - text: Your code should use the <code>slice</code> method.
    testString: assert(code.match(/\.slice/g));
  - text: Your code should not use the <code>splice</code> method.
    testString: assert(!code.match(/\.splice/g));
  - text: The <code>inputCities</code> array should not change.
    testString: assert(JSON.stringify(inputCities) === JSON.stringify(["Chicago", "Delhi", "Islamabad", "London", "Berlin"]));
  - text: <code>nonMutatingSplice(["Chicago", "Delhi", "Islamabad", "London", "Berlin"])</code> should return <code>["Chicago", "Delhi", "Islamabad"]</code>.
    testString: assert(JSON.stringify(nonMutatingSplice(["Chicago", "Delhi", "Islamabad", "London", "Berlin"])) === JSON.stringify(["Chicago", "Delhi", "Islamabad"]));

Challenge Seed

function nonMutatingSplice(cities) {
  // Add your code below this line
  return cities.splice(3);

  // Add your code above this line
}
var inputCities = ["Chicago", "Delhi", "Islamabad", "London", "Berlin"];
nonMutatingSplice(inputCities);

Solution

function nonMutatingSplice(cities) {
  // Add your code below this line
  return cities.slice(0,3);
  // Add your code above this line
}
var inputCities = ["Chicago", "Delhi", "Islamabad", "London", "Berlin"];
nonMutatingSplice(inputCities);