Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
03 Май 2024
2 мин
398

Копирование массивов в JavaScript по значению

Часто возникает ситуация, когда нужно копировать массив в JavaScript. На первый взгляд, кажется, что это достаточно просто сделать, присваивая один массив

Часто возникает ситуация, когда нужно копировать массив в 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']

Этот оператор создает новый массив, копируя в него все элементы исходного массива.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

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