javascript interview question #29

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