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