开发者问题收集

.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