JS - array [index] .length读取为undefined,即使它在函数中打印

时间:2017-05-10 22:07:31

标签: javascript

我正在尝试学习javascript并且无法弄清楚为什么我在第6行中遇到错误(无法读取未定义的属性“长度”)如果相同的属性(索引中每个单词的长度)打印正确低于它。

function findShort(s){
  var inpt = s.split(' ');
  var final = 100;
  for (var i = 0; i <= inpt.length; i++) {
    if (inpt[i].length <= final) {
      console.log(inpt[i].length);
      final += inpt[i].length;
    }
  }
  return final;
}

findShort("this is a test");

所以,我会得到:

// -> 4
// -> 2
// -> 1
// -> 4
// -> TypeError: Cannot read property 'length' of undefined
    at findShort:6:16
    at eval:14:1
    at eval
    at n.<anonymous>

2 个答案:

答案 0 :(得分:3)

它正在发生,因为你的阵列结束了。你需要迭代直到它&lt;&lt; s&lt;长度,而不是&lt; =。

&#13;
&#13;
function findShort(s){
  var inpt = s.split(' ');
  var final = 100;
  for (var i = 0; i < inpt.length; i++) { // < not <=
    if (inpt[i].length <= final) {
      console.log(inpt[i].length);
      final += inpt[i].length;
    }
  }
  return final;
}

findShort("this is a test");
&#13;
&#13;
&#13;

答案 1 :(得分:-1)

您有错误。 请尝试for (var i = 0; i < inpt.length; i++),因为您的indexaton小于inpt.length