Какая разница между slice
и splice
в JavaScript? Что произойдет с массивом arr
?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Array.slice
в JavaScript возвращает поверхностную копию массива. Первыми двумя параметрами ты должен передать индексы start
и end
. Элемент массива на позиции arr[start]
включается в результат, а элемент arr[end]
- нет. Также, Array.splice
удалит все элементы между start
и end
из первоначального массива.
В отличие от Array.splice
, массив не будет модифицирован после вызова Array.slice
.
Таким образом, после выполнения первых двух строк, у нас будет такое состояние:
[ 1, 2, 3, 4, 5] // arr
[ 2 ] // slicedArr
Потом, мы делаем два действия с помощью arr.splice
:
- удаляем два элемента из массива
arr
начиная сarr[1]
. В массиве остаются элементы[ 1, 4, 5 ]
после этого действия. - мы делаем деструктуризацию
…slicedArr
и добавляем его элементы вarr
начиная сarr[1]
. Так, мы приходим к финальному состоянию[ 1, 2, 4, 5]
внутри массиваarr
.
Пример кода, с дополнительным лоцированием для самопроверки:
const arr = [1, 2, 3, 4, 5];
const slicedArr = arr.slice(1, 2);
console.log(arr); // [ 1, 2, 3, 4, 5]
console.log(slicedArr); // [ 2 ]
arr.splice(1, 2, ...slicedArr);
console.log(arr); // [ 1, 2, 4, 5]
ОТВЕТ: Массив arr
будет изменен и будет содержать элементы [ 1, 2, 4, 5]
.