这段代码如何知道返回字符串中最长单词的长度?

时间:2016-10-29 21:03:21

标签: javascript arrays string

这是我的代码:

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

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

我知道它有效,但我不确定为什么它只能挑出字符串中最长的单词。我理解sting会被拆分成一个数组,for循环会检查数组中每个字符串的长度,但p=arr[i].length总是选择最长的一个返回?

3 个答案:

答案 0 :(得分:2)

var arr = str.split(" ");

将字符串拆分为单词数组。

P保留到目前为止找到的最大长度。

我们迭代单词数组,如果单词比p更长,我们将其长度分配给p

答案 1 :(得分:1)

在开始时p等于0

for(i = 0; i&lt; arr.length; i ++){//循环数组中的所有单词

if(arr [i] .length&gt; p){

仅当p(前一个字的长度)长于当前

p = arr [i] .length; //我用当前长度更新p(并不总是,但根据if语句)

所以在循环结束时,p等于最长单词的长度。

答案 2 :(得分:0)

嗯,这很简单: 首先取第一个单词的长度(arr [0] .length)并将值存储在p。

然后你取第二个是arr [1] .length并将它与第一个存储在p中的长度进行比较。如果第二个字大于第一个字(arr [1]> p),则p变为数组[1]等。