在下面的代码中,我继续得到while循环的条件语句的错误TypeError: Cannot read properties of undefined (reading '0')
.
var testObj = {
1: 1,
2: 2,
3: 3,
4: 4,
5: 5,
6: 6,
7: 7,
8: 8,
9: 9
};
var testArr = [
[1, []],
[2, []],
[3, []],
[4, []],
[5, []],
[6, []],
[7, []],
[8, []],
[9, []]
];
(_ => {
for (let x in testObj) {
let i = 0;
while (x !== testArr[i][0]) {
i++;
}
testArr[i][1].push(x);
}
})();
为了解释代码是如何工作的,假定匿名函数迭代对象中的每一项.在每次迭代期间,While循环将用于在嵌套数组中查找第一个数据点(索引0)是与对象的当前数据点匹配的数字的数组,然后将该数据点推入位于该数组中索引1处的空数组中.
(这是一个较大程序的简化版本,用于测试目的.我知道代码是多余的,因为所有数字都是有序的,但在主程序中情况并非如此.)
然而,由于上述类型错误,程序在进入While循环时崩溃.
我已经确认这不是作用域问题,因为我可以从While循环内部访问array.我还确认了对嵌套数组中的任何数据点的硬调用也是有效的,所以我不认为这是一个语法错误.我能想到的这个问题的唯一可能原因是,在While循环中使用i
时,它不知何故不是一个数字,但我不知道这是如何发生的.