.length的位置之间的差异

时间:2017-01-27 22:23:25

标签: javascript

我一直在使用javascript算法并且一直困惑为什么一个工作而另一个工作不起作用。我已经想到这一点,我需要你们许多人的详尽解释,听取不同的解释,以巩固我对这里发生的事情的理解。

解释两种算法之间的区别:

function findLongestWord(str) {
  var longestNum = 0;
  var splitStr = str.split(" ");
  for(var i = 0; i < splitStr.length; i++) {
    if(splitStr[i].length > longestNum) {
      longestNum = splitStr[i].length;
    }
  }
  return longestNum;
}

findLongestWord("The quick brown fox jumped over the lazy dog");

为什么顶部的工作和底部工作不起作用?

function findLongestWord(str) {
  var longestNum = 0;
  var splitStr = str.split(" ").length;
  for(var i = 0; i < splitStr; i++) {
    if(splitStr[i].length > longestNum) {
      longestNum = splitStr[i].length;
    }
  }
  return longestNum;
}

findLongestWord("The quick brown fox jumped over the lazy dog");

3 个答案:

答案 0 :(得分:3)

splitStr包含数组的长度,而不是数组本身。

var splitStr = str.split(" ").length;
//                            ^^^^^^

它不适用于索引

splitStr[i]
//      ^^^

因为数字没有索引。

包含console.log部分的整个非工作代码。它打破了访问权限 splitStr[i],因为原始数据类型没有属性。因此无法通过索引访问。

&#13;
&#13;
function findLongestWord(str) {
    var longestNum = 0;
    console.log('longestNum', longestNum);               // 0
    var splitStr = str.split(" ").length;
    console.log('splitStr', splitStr);                   // 9
    for (var i = 0; i < splitStr; i++) {
        console.log('i', i);                             // 0
        console.log('longestNum', longestNum);           // 0
        console.log('splitStr', splitStr);               // 9
        if (splitStr[i].length > longestNum) {           // << Unable to get property |
            console.log('splitStr['+i+']', splitStr[i]); //  | 'length' of undefined  |
            longestNum = splitStr[i].length;             //  | or null reference      <<
        }
        console.log('longestNum', longestNum);
        console.log('--');
    }
    return longestNum;
}

console.log(findLongestWord("The quick brown fox jumped over the lazy dog"));
console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;

请同时查看这些问题和答案。

答案 1 :(得分:0)

在底部,您将分配splitStr的值。

答案 2 :(得分:0)

function findLongestWord(str) {
var longestNum = 0;
var splitStr = str.split(" ").length; 

for(var i = 0; i < splitStr; i++) {
if(splitStr[i].length > longestNum) {
  longestNum = splitStr[i].length;
 }
}
        return longestNum;
}

    findLongestWord("The quick brown fox jumped over the lazy dog");
  

var splitStr = str.split(“”)。length

     

str.split(“”)//这将返回一个字符串数组

     

str.split(“”)。lenght //返回数组的长度,比如说3

     

所以splitStr最终拿着3

     

所以做splitStr [i] .length就像做3 [i] .length一样没有意义