Часто возникает ситуация, когда нужно копировать массив в JavaScript. На первый взгляд, кажется, что это достаточно просто сделать, присваивая один массив другому. Однако это не совсем так.
Рассмотрим следующий пример:
let fruits1 = ['apple', 'banana', 'cherry'];
let fruits2 = fruits1;
fruits2.push('date');
console.log(fruits1); // Выведет: ['apple', 'banana', 'cherry', 'date']
В этом случае оказывается, что оба массива — fruits1 и fruits2 — указывают на один и тот же массив. Изменение в одном массиве отражается и в другом. Это происходит потому, что в JavaScript массивы являются ссылочными типами данных. При присваивании одного массива другому, оба массива ссылаются на одно и то же место в памяти, где хранятся данные.
Так что, если нужно копировать массив так, чтобы получить два независимых массива, которые можно изменять отдельно, нужно использовать другой подход.
Один из способов сделать это — использовать метод slice без аргументов:
let fruits1 = ['apple', 'banana', 'cherry'];
let fruits2 = fruits1.slice();
fruits2.push('date');
console.log(fruits1); // Выведет: ['apple', 'banana', 'cherry']
console.log(fruits2); // Выведет: ['apple', 'banana', 'cherry', 'date']
В этом случае fruits2 становится копией fruits1, и их можно изменять независимо друг от друга.
Еще один способ — использовать оператор расширения (spread operator) ...:
let fruits1 = ['apple', 'banana', 'cherry'];
let fruits2 = [...fruits1];
fruits2.push('date');
console.log(fruits1); // Выведет: ['apple', 'banana', 'cherry']
console.log(fruits2); // Выведет: ['apple', 'banana', 'cherry', 'date']
Этот оператор создает новый массив, копируя в него все элементы исходного массива.
Перейти в телеграм, чтобы получить результаты теста






Забрать
Добавить комментарий