Gernar
JavaScript: язык и типы

Что возвращает метод массива splice в JavaScript

Разбор вопроса «Что возвращает метод массива splice в JavaScript» для Frontend Developer: что проверяет интервьюер, ключевые тезисы, практические примеры и частые ошибки.

Вопрос

Что возвращает метод массива splice в JavaScript

Профессия

Frontend Developer

Что хочет услышать интервьюер

Интервьюер хочет убедиться, что кандидат понимает поведение метода splice, включая его мутабельный характер и возвращаемое значение. Важно показать знание того, что splice изменяет исходный массив и возвращает удаленные элементы.

Ключевые тезисы

  • Метод splice возвращает новый массив, содержащий удаленные элементы из исходного массива.
  • Если элементы не удаляются, splice возвращает пустой массив.
  • Исходный массив при этом изменяется — из него удаляются или добавляются указанные элементы.

Подробный ответ

Метод splice() в JavaScript используется для изменения содержимого массива путем удаления, замены или добавления элементов. Он возвращает новый массив, содержащий удаленные элементы. Если элементы не удаляются, метод возвращает пустой массив. При этом исходный массив изменяется — из него удаляются или добавляются указанные элементы. splice() принимает три параметра: начальный индекс, количество удаляемых элементов (deleteCount) и необязательные элементы для добавления. Если второй параметр (deleteCount) не передан, splice() удалит все элементы от начального индекса до конца массива. Если начальный индекс больше длины массива, splice() ведет себя как добавление элементов в конец массива без удаления.

Практические примеры

Пример 1

Пример 1: Удаление элементов

const fruits = ['apple', 'banana', 'cherry', 'date'];
const removed = fruits.splice(1, 2);
console.log(removed); // ['banana', 'cherry']
console.log(fruits); // ['apple', 'date']

Пример 2

Пример 2: Добавление элементов без удаления

const numbers = [1, 2, 3, 4];
numbers.splice(2, 0, 'a', 'b');
console.log(numbers); // [1, 2, 'a', 'b', 3, 4]

Пример 3

Пример 3: Замена элементов

const colors = ['red', 'green', 'blue'];
const removedColors = colors.splice(1, 1, 'yellow', 'orange');
console.log(removedColors); // ['green']
console.log(colors); // ['red', 'yellow', 'orange', 'blue']

Частые ошибки

  • Путаница между splice() и slice(). slice() возвращает новый массив, содержащий копию части исходного массива, не изменяя его, в то время как splice() изменяет исходный массив.
  • Непонимание поведения splice() при отсутствии второго аргумента. Без deleteCount удаляются все элементы от начального индекса до конца массива.

Связанные темы

  • Метод slice() для работы с массивами
  • Метод push() и pop() для добавления и удаления элементов в конце массива
  • Метод shift() и unshift() для добавления и удаления элементов в начале массива

Follow-up вопросы

Чем отличается splice от slice?

Уровень: basic

splice изменяет исходный массив, удаляя или добавляя элементы, и возвращает удаленные элементы. slice возвращает новый массив — копию части исходного массива, не изменяя его.

Можно ли использовать splice для добавления элементов без удаления? Как?

Уровень: intermediate

Да, если передать 0 в качестве второго аргумента (количество удаляемых элементов). Например: arr.splice(2, 0, 'new') добавит 'new' на позицию 2, не удаляя элементы.

Как поведет себя splice, если начальный индекс больше длины массива?

Уровень: intermediate

Начальный индекс будет установлен равным длине массива. Если удаление не требуется (например, splice(len, 0, elem)), элемент добавится в конец. Если удаление задано — вернется пустой массив, так как удалять нечего.

Какие будут последствия, если не передать второй аргумент (deleteCount) в splice?

Уровень: advanced

Все элементы от начального индекса до конца массива будут удалены, так как deleteCount по умолчанию равен (arr.length - startIndex). splice вернет эти элементы.

Как безопасно удалить последний элемент массива с помощью splice?

Уровень: basic

Используйте arr.splice(-1, 1). Отрицательный индекс отсчитывается с конца массива (-1 — последний элемент), а 1 указывает на удаление одного элемента.

Содержание