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 в песочнице этого сайта не выполняется. Перенесите пример в отдельный учебный файл. Сначала проверьте исходный результат, затем измените входные данные; ошибка проверки означает, что результат отличается от ожидаемого.