这段代码有效,但我不明白为什么。它不会返回任何带有超过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;
}
答案 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
中,并在它有最后一个字母时继续。
在循环中添加一些括号将使代码正常工作:
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;