在javascript中将数组的字符串元素的长度设置为for循环中的变量

时间:2016-09-27 00:16:03

标签: javascript arrays

我有这个代码。由于某种原因,我得到错误:Uncaught TypeError: Cannot read property 'length' of undefined。我似乎无法弄清楚原因。



function findShort(s) {

  var c = s.split(' ');
  var l = c[0].length;
  var wordlength;

  for (var i = 1; c.length; i++) {
    console.log(c[i].length);

    wordlength = c[i].length;
    if (l < wordlength) {
      l = wordlength;

    }
  }
  return l;

}

console.log(findShort("hello dog cat 12 asdsad wuidhuiwqhd"));
&#13;
&#13;
&#13;

错误在于行wordlength = c[i].length;

当我在console.log中时,它会显示数组中每个字符串的长度。但是,当我尝试存储该长度时,它表示它未定义。

1 个答案:

答案 0 :(得分:3)

您需要更改此行

for ( var i = 1; c.length; i++ ) {

for ( var i = 1; i<c.length; i++ ) {

for循环的第二个组件是一个布尔条件,检查每一轮循环以确定循环是否应该继续。通过放置c.length,您将给出一个常量值,该值将使循环永远不会运行(如果c.length为0),或者永远运行(如果c.length不是0)。< / p>

您还应该注意以下几行:

var l = c[0].length;

它可能会导致问题,因为无法保证c至少有一个元素。