Копировать массив по значению в JavaScript: 11 способов

Копировать массив по значению в JavaScript: 11 способов

Введение

Копирование массива является распространенной задачей в JavaScript. Однако, при работе с массивами, нам часто требуется создать копию массива, а не просто ссылку на него. В этой статье мы рассмотрим 11 различных способов копирования массива по значению в JavaScript.

1. Метод slice()

Метод slice() позволяет создать копию массива, начиная с указанного индекса и заканчивая указанным индексом (не включая его). Если не указывать параметры, slice() создаст полную копию массива.

const originalArray = [1, 2, 3, 4, 5];
const copiedArray = originalArray.slice();

2. Оператор spread

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

const originalArray = [1, 2, 3, 4, 5];
const copiedArray = [...originalArray];

3. Метод concat()

Метод concat() объединяет два или более массива и возвращает новый массив. При передаче только одного массива в метод concat(), создается его копия.

const originalArray = [1, 2, 3, 4, 5];
const copiedArray = originalArray.concat();

4. Метод Array.from()

Метод Array.from() создает новый массив из переданного объекта, аргументом которого может быть исходный массив. При использовании этого метода, создается полная копия массива.

const originalArray = [1, 2, 3, 4, 5];
const copiedArray = Array.from(originalArray);

5. Метод Array.map()

Метод Array.map() позволяет применить функцию к каждому элементу массива и вернуть новый массив. При использовании map(), создается новый массив с копиями элементов исходного массива.

const originalArray = [1, 2, 3, 4, 5];
const copiedArray = originalArray.map(item => item);

6. Метод Array.filter()

Метод Array.filter() позволяет создать новый массив с элементами, прошедшими определенное условие. При использовании filter(), создается новый массив с копиями элементов исходного массива.

const originalArray = [1, 2, 3, 4, 5];
const copiedArray = originalArray.filter(item => true);

7. Метод Array.reduce()

Метод Array.reduce() позволяет применить функцию к аккумулятору и каждому элементу массива, возвращая одно значение. При использовании reduce(), создается новый массив с копиями элементов исходного массива.

const originalArray = [1, 2, 3, 4, 5];
const copiedArray = originalArray.reduce((acc, item) => [...acc, item], []);

8. Цикл for…of

Цикл for...of позволяет перебрать элементы массива и выполнить определенные действия для каждого элемента. При использовании for...of, создается новый массив с копиями элементов исходного массива.

const originalArray = [1, 2, 3, 4, 5];
const copiedArray = [];
for (const item of originalArray) {
  copiedArray.push(item);
}

9. Цикл for

Цикл for позволяет перебрать элементы массива по индексам и выполнить определенные действия для каждого элемента. При использовании for, создается новый массив с копиями элементов исходного массива.

const originalArray = [1, 2, 3, 4, 5];
const copiedArray = [];
for (let i = 0; i < originalArray.length; i++) {
  copiedArray[i] = originalArray[i];
}

10. Метод Object.assign()

Метод Object.assign() используется для копирования значений всех перечисляемых свойств из одного или более исходных объектов в целевой объект. При использовании Object.assign(), создается новый массив с копиями элементов исходного массива.

const originalArray = [1, 2, 3, 4, 5];
const copiedArray = Object.assign([], originalArray);

11. Метод Array.slice() с отрицательным индексом

Метод slice() можно использовать с отрицательным индексом, чтобы скопировать массив с конца. При использовании отрицательного индекса, создается новый массив с копиями элементов исходного массива.

const originalArray = [1, 2, 3, 4, 5];
const copiedArray = originalArray.slice(-originalArray.length);

Заключение

В этой статье мы рассмотрели 11 различных способов копирования массива по значению в JavaScript. Каждый из этих способов имеет свои особенности и может быть использован в различных ситуациях. Выберите подходящий способ в зависимости от ваших потребностей и предпочтений.

Читайте так же  Что означает символ ! в JavaScript?