理解"找到字符串中最长的单词"码

时间:2015-09-04 20:10:57

标签: javascript

function findLongestWord(str){
    str = str.split(" ");
    var longest = 0;
    var word = null;
    for (i = 0;i < str.length; i++){
        if (longest < str[i].length){
            longest = str[i].length;
            word = str[i];
        }
    }
    console.log(longest);
    return word.length;
}

我不理解var longest = 0;var word = null的用法。我只能理解&#34; split&#34;,&#34;用于&#34;和&#34;如果&#34;。

为什么如下:

  1. longest = str[i].length这与0 = str[i].length相同吗?如果是,为什么将其设置为0?

  2. str[i] = word这与null = str[i]相同吗?据我所知,null意味着&#34;空&#34;。

  3. 这里的逻辑是什么?

4 个答案:

答案 0 :(得分:2)

值从右到左分配,最初, 最长等于0, 然后在命令下面使它等于str [i] .length(从右到左分配)

longest = str[i].length  

(这里str [i] .length是正确的值,所以它的值将分配给最长)

因此它与0 = str [i] .length不同   类似

str[i] = word 

使str [i]等于word not null = str [i]

左值称为左值,维基百科LValue是&#34;在计算机科学中,指向存储位置的值,可能允许分配新值&#34;

答案 1 :(得分:1)

split将字符串拆分为JavaScript数组(有点像列表,其中每个单词是列表中的一个术语)。

然后for循环遍历数组。在这个for循环i表示当前渗透(即循环第一次绕i将为0,第二次为1,依此类推。)

因此,str[i]获取当前单词(在循环的当前渗透中),.length获取单词的长度。 longest变量初始设置为0,因为没有输入单词。然后,如果当前字长于longest变量的当前值,则该变量将设置为当前字长度的新变量。

同样,word最初设置为null,因为还没有最长的单词。如果找到新的最长单词,则word设置为该单词。

希望这是有道理的,如果不是让我知道你仍然难以理解,我会非常乐意进一步解释:)

答案 2 :(得分:1)

str = str.split(" "); 这将所有单词分成一个数组。

var longest = 0; 这将存储最长单词中的字母数。它被初始化为零,因为它还没有开始查看单词。

var word = null; 这将存储具有最多字母数的单词。它被初始化为null,因为它还没有开始查看单词。

for (i = 0;i < str.length; i++){ 这循环遍历每个单词

if (longest < str[i].length){ 这将检查循环中的当前单词是否比我们迄今为止找到的最长单词更长(length更长)。最初这将始终为真,因为第一个单词始终是最长的单词,长度将长于0。

longest = str[i].length; 这记录了到目前为止我们找到的最长单词中的字符长度/数量。

word = str[i]; 这记录了我们迄今为止发现的最长的单词。

console.log(longest); 这将在javascript控制台中显示找到的最长单词的长度

return word.length; 这将向调用者返回发现时间最长的单词

答案 3 :(得分:0)

function findLongestWord(str){            //define a function
    str = str.split(" ");                 //split the string by " " to get an array of the words
    var longest = 0;                      //initiate a variable to store the length of the longest word and set it to 0 (because no words are tested yet)
    var word = null;                     //initiate a variable to store the longest word. Better change this to "var word = '';" so its a string
    for (i = 0;i < str.length; i++){     //iterate through the array of words
        if (longest < str[i].length){    //test if the current word is longer than the longest yet tested word
            longest = str[i].length;     //if its longer store the length of the current word in "longest"
            word = str[i];               //and the actual word in "word"
        }
    }
    console.log(longest);                //log the length in the console
    return word.length;                  //and return the length of the word
}

我对你的功能进行了一些小的优化:

function findLongestWord(str){
    if(typeof str != "string")
        return 0;
    str = str.split(" ");
    var word = "";
    for (i = 0;i < str.length; i++){
        if (word.length < str[i].length){
            word = str[i];
        }
    }
    console.log(word.length);
    return word.length;
}