Чем отличается от array.push() и array = […array, newItem]?

#javascript #arrays

Вопрос:

Я видел, как некоторые ютуберы не используют array.push() для добавления элементов в массив, а скорее делают что-то вроде:

 let item = 3
let array = [1, 2];

array = [...array, item]; // Why not use array.push()?
 

Есть ли какая — либо разница между этими двумя методами и какой из них я должен использовать?

Комментарии:

1. Попробуйте let array2 = array; , а затем push или [...] , затем сравните array , array2 и вы увидите разницу.

2. [...array, item] — это позволит: 1. создать новый массив. 2. скопируйте (мелко) все элементы из array этого вновь созданного массива. 3. добавьте item его во вновь созданный массив. Разница заключается в создании нового массива по сравнению с манипулированием существующим массивом в случае push() метода.

Ответ №1:

Push: Используйте push, когда вы хотите добавить данные в существующий массив и не хотите создавать

Когда вы используете метод push, вы добавляете элемент к существующему, т. е. не создаете новый массив.

Метод push() добавляет один или несколько элементов в конец массива и возвращает новую длину массива. — MDN

 const arr = [1, 2, 3, 4, 5];
const returnValue = arr.push(6);

console.log(arr);
console.log(returnValue) 

Синтаксис распространения: Используйте синтаксис распространения, если вы хотите добавить элементы в новый массив(он может быть из распространения или также может добавлять новые элементы), но создаст новый массив []

Это называется синтаксисом распространения

Синтаксис распространения (…) позволяет итерировать, например, выражение массива или строку, которые должны быть расширены в местах, где ожидается ноль или более аргументов (для вызовов функций) или элементов (для литералов массива), или выражение объекта, которое должно быть расширено в местах, где ожидается ноль или более пар ключ-значение (для литералов объектов).

 let array = [1, 2];
let item = 3

result = [...array, item];
console.log(result === array); 

В приведенном выше фрагменте вы создаете новый array и присваиваете значения 1, 2 , затем используете синтаксис распространения, чтобы распространить его в новый массив. Вы также можете добавлять новые элементы, например item , значение которых равно 3 .

Ответ №2:

массив.push манипулирует существующим массивом. Последний создает новую копию с новым значением.

Ответ №3:

Выталкивание массива используется для выталкивания элементов из существующего массива, но если нам нужна копия элемента массива в качестве новой переменной массива, вы можете использовать оператор […array].