我想在二维空数组中推送一些元素,我发现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]
答案 0 :(得分:4)
第一个代码段创建3个不同的子数组,并将其存储在a
a[0]
,a[1]
,a[2]
。修改a[1]
时,a[0]
和a[2]
不受影响。
第二个代码段创建1个子数组,并在a
,a[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()方法用静态值填充所有元素。