开发者问题收集

为什么使用 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