.push 导致循环中出现未定义的值
2018-12-12
129
我不确定为什么此代码会在“组”数组中返回未定义的值:
Arr = [0,0,1,0,0,1,1,0,1,0]
for (j=0; j<5; j++){
for (i in Arr) {
this["groupS" + j + "C" + i] = [Arr[i]]
for (a=1; a<=j; a++) {
this["groupS" + j + "C" + i].unshift(Arr[i-a])
this["groupS" + j + "C" + i].push(Arr[i+a])
}
}
}
console.log(groupS2C2)
对于应包含
Arr
的前 5 个元素的组,它返回
[0, 0, 1, undefined, undefined]
。出于某种原因,它似乎可以对“a”取反,但不能对“a”添加。
1个回答
您不能使用
for (i in Arr)
,因为
Arr
不是对象,而是数组。
您必须使用数组的索引,如下所示:
for (i = 0; i < Arr.length; i++)
编辑:
从技术上讲,
Arr
是
一个对象,但将其视为对象并不是您的本意。这就是您仍然得到部分正确结果的原因。
pid
2018-12-12