gpt4 book ai didi

Javascript:将数组插入数组还是将值插入数组?

转载 作者:行者123 更新时间:2023-11-30 12:23:08 24 4
gpt4 key购买 nike

我是 javascript 的新手,不太了解 push() 方法的工作原理。

我有两个空数组,row 和 newData。还有两段输出截然不同的代码:

for (i = 1; i <= 10 ; i++) {
row[0] = i;
newData.push(row);
}

结果是 newData == [10,10,10,...,10],这让我感到非常惊讶,并且

for (i = 1; i <= 10 ; i++) {
newData.push(i);
}

结果为 newData == [1,2,3,...,8,9,10],这是预期的结果。

但我不明白为什么当第二个循环按预期工作时,第一个循环的每次迭代似乎都用最后一个元素替换了 newData 的每个元素?

谢谢!

最佳答案

你的第一个片段:

var row = new Array();
var newData = new Array();

for (i = 1; i <= 10 ; i++) {
row[0] = i;
newData.push(row);
}

将数组 row 的引用压入 10 次,同时将该数组的位置 0 中包含的值依次更改为值 1、2、3 .. 10,最终结果是将 row 数组的最终内容设置为:[10]

newData 的实际最终值更正确地显示为:

[[10],[10],[10],[10],[10],[10],[10],[10],[10],[10]]

而不是:

 [10,10,10,...,10]

在 JavaScript 中,将对象插入数组(在本例中是 Array 类的实例)实际上是将对象的引用插入数组。推送相同的变量 row 不会创建它的多个实例。

此处详细解释了此行为:Is JavaScript a pass-by-reference or pass-by-value language? .

关于Javascript:将数组插入数组还是将值插入数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30369328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com