Вебсправочник
Справочник JavaScript

Array.slice(): копия части массива

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

Назначение

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

Как это работает

Начальная граница включается, конечная исключается. Отрицательные индексы отсчитываются от конца. Копирование поверхностное: вложенные объекты сохраняют свои ссылки.

Пример

const values=[10,20,30,40];
const part=values.slice(1,3);
console.assert(JSON.stringify(part)==="[20,30]");
console.assert(values.length===4);
console.assert(values.slice(-1)[0]===40);

Что должно получиться

Срез содержит 20 и 30, исходный массив имеет прежние четыре элемента. Значение 40 не включено в диапазон с конечной границей 3.

Граница применения и частая ошибка

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

Самостоятельная проверка

Возьмите два последних элемента отрицательным индексом. Затем сделайте срез массива объектов и измените вложенное поле, чтобы увидеть границу поверхностной копии.

JavaScript в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.