为什么使用 javascript 数组中的 .length 属性会收到此错误?
2019-09-20
559
function openOrSenior(data){
//console.log(data.length);
//console.log((data[0]).length);
for (var i=1; i<=(data.length); i++){
for (var j=0; j<(data[j].length); j++){ // GETTING THIS CONSOLE ERROR : Uncaught TypeError: Cannot read property 'length' of undefined
console.log(data[j].length);
console.log(data[j]);
console.log(data);
}
}
return (data);
}
openOrSenior([[45, 12],[55,21]]);
我是 Javascript 新手。为什么我会收到此错误?
for (var j=0; j<(data[j].length); j++){//codes...} // GETTING THIS CONSOLE ERROR : Uncaught TypeError: Cannot read property 'length' of undefined
而该 for 循环内的代码运行正常:
console.log(data[j].length);
console.log(data[j]);
console.log(data);
2个回答
第一个问题在于第一个循环,其中
i
应该从
0
开始,其次在第二个循环中它应该是
j < data[i].length
而不是 j 本身,因为最终 j 会增加并超出范围,因此您面临的未定义异常。谢谢..
Abhishek Bag
2019-09-20
function openOrSenior(data) {
for (var i = 1; i < (data.length); i++) {
for (var j = 0; j < (data[i].length); j++) {
console.log(data[j].length);
console.log(data[j]);
console.log(data);
}
}
return (data);
}
openOrSenior([
[45, 12],
[55, 21]
]);
需要更正 j 循环迭代,如 for (var j = 0; j < (data[i].length); j++) ,您遇到问题是因为当 j 循环在 2 次迭代后执行操作时它没有任何值。
ankitkanojia
2019-09-20