Javascript字母数

时间:2015-08-06 23:11:05

标签: javascript string sorting

这段代码有效,但我不明白为什么。它不会返回任何带有超过1个字母的单词的值,而不是下面此处出现最多的字母。

if(count>1){
 return word;  
 }

这是完整的代码

        function LetterCountI(str) { 
 var x=str.split(" ") 
   var count=0; 
   for(var i=0; i<x.length; i++)//getting the word
     var word=x[i]
     for(var j=0; j<word.length; j++)//getting the letter
      var letter=word[j]
       for(var k=0; k<word.length; k++)//comparing word
         if(j !== k) { /* verify that the letter being pased is not literally the same as in the higher for loop */
           if(letter===word[k]){
           count=count+1; 
              if(count>1){
               return word;  
           }
        }
     }   
  return -1;
}

1 个答案:

答案 0 :(得分:0)

该函数不循环字符串中的所有单词并检查重复的字母,它循环字符串中的单词,然后循环最后一个单词中的字母,然后检查最后一个单词的重复项最后一个字母。

看看以下几行:

for(var i=0; i<x.length; i++)//getting the word
  var word=x[i]

由于循环内的代码没有括号,因此它只是成为循环中代码的下一个语句。它与:

相同
for(var i=0; i<x.length; i++) {//getting the word
  var word=x[i]
}

这个循环遍历字符串中的单词并将每个单词放在变量word中,当循环结束时,字符串中的最后一个单词位于变量中,代码可以继续。

下一个循环有相同的错误,因此它会将单词的每个字母放在变量letter中,并在它有最后一个字母时继续。

在循环中添加一些括号将使代码正常工作:

&#13;
&#13;
function LetterCountI(str) { 
  var x = str.split(" ");
  var count = 0; 
  for (var i = 0; i < x.length; i++) {//getting the word
    var word = x[i];
    for (var j=0; j<word.length; j++) {//getting the letter
      var letter = word[j];
      for (var k = 0; k < word.length; k++) {//comparing word
        if (j !== k) { /* verify that the letter being pased is not literally the same as in the higher for loop */
          if (letter === word[k]) {
            count = count + 1;
            if (count > 1) {
              return word;
            }
          }
        }
      }
    }
  }
  return -1;
}

document.write(LetterCountI('What a cool boat'));
&#13;
&#13;
&#13;