Введение
Копирование массива является распространенной задачей в 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. Каждый из этих способов имеет свои особенности и может быть использован в различных ситуациях. Выберите подходящий способ в зависимости от ваших потребностей и предпочтений.