什么是array.push()和array=[...array,newItem]之间的区别?

3

我看到一些YouTuber不使用array.push()向数组中添加元素,而是做类似于:

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

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

这两种方法有什么区别,我应该使用哪一种?


尝试使用let array2 = array;,然后使用push[...],然后比较arrayarray2,你会看到它们之间的差异。 - undefined
1
[...array, item] - 这将会:1. 创建一个新数组。2. 将array中的所有项(浅拷贝)复制到这个新创建的数组中。3. 在新创建的数组中添加item。与push()方法在操作现有数组方面的区别在于新数组的创建。 - undefined
有人从性能角度测试过这个吗?array.push() 真的更有效率还是一样的? - undefined
3个回答

3

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,然后你使用扩展语法将它展开到一个新的数组中。你还可以添加新元素,比如值为3的`item`。

1

数组的 push 方法用于向已有的数组添加项,但如果我们希望将数组元素的副本作为新的数组变量-您可以使用 […array] 运算符。


1

array.push 操作现有数组,后者则使用新值创建一个新副本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接