Javascript:将数组推送到数组中

cbwuti44  于 2023-02-07  发布在  Java
关注(0)|答案(3)|浏览(217)

JS问题:我需要把一个数组推到另一个数组中,有两种方法:一个普通push()和一个相同但带有扩展运算符的push()

arr.push([newArr]);
 arr.push([...newArr]);

(both arrnewArr是数组)
spread操作符在这里实际完成了什么?在第二个示例中,我在控制台中观察,得到了我想要的结果:
资源[0](3)[1,2,3]
所以我压入的数组变成了新数组中的一个元素。到目前为止一切顺利。
但在第一个例子中,没有spread运算符,我得到:
res [0][数组(3)]
资源[0][0](3)[1,2,3]
这就是我不明白的地方,为什么,当不使用spread时,我得到的似乎是......某种 Package 器......在数组上?当我在控制台中得到[Array(x)]时,它到底意味着什么??它是数组中的数组还是......?
所以问题是:这是什么[Array(x)],为什么有,为什么spread操作符要清除它?
谢谢你!

nwnhqdif

nwnhqdif1#

让我们看一下这个示例

const newArr = [1,2,3];

const a1 = [newArr];
const a2 = [...newArr];

console.log(a1);
console.log(a2);

在第一种情况下,newArr成为数组a1的第一个元素。在第二种情况下,spread运算符将newArr的所有元素逐个放入数组a2的元素中。因此a1==[newArr]a2==[newArr[0], newArr[1], newArr[2]]

qojgxg4l

qojgxg4l2#

将数组arr视为一行储物柜。
当你使用arr.push([newArr]);的时候,你会得到整个数组[newArr],并把整个数组放到下一个可用的locker中,如果newArr本身包含3个值(locker),那么所有这3个值都会作为newArr放到arr中的下一个可用的locker中,扩展arr数组以适应站点,在本例中添加1个locker。
当你使用spread操作符arr.push([...newArr]);时,你从newArr中取出newArr的每一个元素,并将每一个元素依次放入行中下一个可用的储物柜中。(储物柜),第一个进入arr中的下一个可用储物柜,第二个进入arr中的第二个可用储物柜,第三个进入第三个,扩展arr数组以容纳站点,在本例中添加了3个locker。
spread操作符本质上是展平数组,而push不是。

nwo49xxi

nwo49xxi3#

arr.push([newArr]);将具有一个项newArr数组推送到arrarr.push([...newArr]);newArr浅副本推送到arr
Spread syntax.

相关问题