JS问题:我需要把一个数组推到另一个数组中,有两种方法:一个普通push()
和一个相同但带有扩展运算符的push()
arr.push([newArr]);
arr.push([...newArr]);
(both arr
和newArr
是数组)
spread操作符在这里实际完成了什么?在第二个示例中,我在控制台中观察,得到了我想要的结果:
资源[0](3)[1,2,3]
所以我压入的数组变成了新数组中的一个元素。到目前为止一切顺利。
但在第一个例子中,没有spread运算符,我得到:
res [0][数组(3)]
资源[0][0](3)[1,2,3]
这就是我不明白的地方,为什么,当不使用spread时,我得到的似乎是......某种 Package 器......在数组上?当我在控制台中得到[Array(x)]时,它到底意味着什么??它是数组中的数组还是......?
所以问题是:这是什么[Array(x)],为什么有,为什么spread操作符要清除它?
谢谢你!
3条答案
按热度按时间nwnhqdif1#
让我们看一下这个示例
在第一种情况下,
newArr
成为数组a1
的第一个元素。在第二种情况下,spread运算符将newArr
的所有元素逐个放入数组a2
的元素中。因此a1==[newArr]
,a2==[newArr[0], newArr[1], newArr[2]]
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不是。
nwo49xxi3#
arr.push([newArr]);
将具有一个项newArr
的数组推送到arr
。arr.push([...newArr]);
将newArr
的浅副本推送到arr
。Spread syntax.