【发布时间】:2020-10-06 16:40:57
【问题描述】:
我创建了一个空的 3x3x1 3D 数组
[
[[],[],[]],
[[],[],[]],
[[],[],[]]
]
现在,arr[1][1] 位置的元素是[],所以,如果我执行arr[1][1].push(1),它应该在arr[1][1] 位置插入1
在JS中创建一个空的3x3x1数组有2种方法,代码如下,
var arr1 = [...new Array(3)].map(e => [...new Array(3)].fill([]));
var arr2 = [[[],[],[]],[[],[],[]],[[],[],[]]];
arr1[1][1].push(1);
arr2[1][1].push(1);
console.log(arr1)
console.log(arr2)
即。通过快捷方式和另一个手动,arr1和arr2应该是相同的,所以应该是输出,但输出如下,
[[[], [], []], [[1], [1], [1]], [[], [], []]]
[[[], [], []], [[], [1], []], [[], [], []]]
为什么第一个数组会给出这样的输出?两者不一样吗?
我希望输出是第二种形式,如果这是创建空 3x3x1 数组的错误方法,请建议一种方法,以便它提供预期的输出。
【问题讨论】:
-
这能回答你的问题吗? Array.fill gives same object repeated. why?
-
@Ivar 如果分解,是的。但我认为如果有人有这样的问题,他们不会知道 fill() 是罪魁祸首。他们可能会用这个短语进行搜索。这确实回答了这个问题,我同意。
-
这就是为什么我们在as a signpost 周围保留这样的问题。 :)
-
@Ivar 好的,这是一件好事,我很难找到为什么我会遇到这个问题,而且不清楚我们无法正确表达它,他们只会描述更大的图景,它可能会帮助陷入类似情况的人,谢谢。
标签: javascript arrays push