
Какая разница между 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].