使用新数组推送方法

时间:2017-01-13 22:55:28

标签: javascript arrays

我想在二维空数组中推送一些元素,我发现push方法存在一些问题。

var a = [[],[],[]]; 
a[1].push(1);
console.log(a);
//result: [ [], [ 1 ], [] ]

上面的代码将获得正确的结果,但是如果我使用新的Array方法,push方法总是推送到所有索引。我做错了吗?

var a = new Array(3).fill([]);
// a = [[], [], []]  
a[1].push(1);
console.log(a);
//result: [ [ 1 ], [ 1 ], [ 1 ] ], 
//but I think it should be [ [], [ 1 ], [] ] if I only push 1 to a[1]

3 个答案:

答案 0 :(得分:4)

第一个代码段创建3个不同的子数组,并将其存储在a a[0]a[1]a[2]。修改a[1]时,a[0]a[2]不受影响。

第二个代码段创建1个子数组,并在aa[0]a[1]将其存储在a[2] 3次。修改a[1]时,a[0]a[2]也会被修改,因为它们都包含相同的数组。

答案 1 :(得分:0)

像这样使用fill()将您的值放在数组中的每个索引中。要根据需要使用它,您应该尝试set.connect(rightButton.getId(),ConstraintSet.LEFT, leftButton.getId(),ConstraintSet.RIGHT,0); ,其中start是要填充值的第一个索引,end是最后一个。

答案 2 :(得分:0)

那是对的。根据{{​​3}}:fill()方法用静态值填充所有元素。