在下面的代码中,为什么每个字符看起来都等于其他每个字符?
编写一个JavaScript函数,将一个句子作为参数和 确定该句子中哪个单词的个数最多 重复的字母(重复的字母不必连续)。
如果句子中有多个单词具有相同的最大重复字母, 将它们全部返回到数组中。
var repeatedLettersInAString = function(){
var repeatedLetterCount = 0;
var wordsWithRepeatedLetters = {};
var userString = prompt("enter your string", "it will go here!").split(' ');
/* var i selects the array element, var x will be the
character to which var n will be compared. */
console.log(userString);
for(var i = 0; i < userString.length; i++){
console.log(userString[i] + " userString");
for (var x = 0; x < userString[i].length; x++){
for (var n = 0; n < userString[i].length; n++){
if (userString[i].charAt(x) === userString[i].charAt(n), x!==n){
repeatedLetterCount++;
wordsWithRepeatedLetters[i] = userString[i];
console.log(wordsWithRepeatedLetters);
}else{
console.log("There are no repeating characters");
}
}
}
}
console.log(repeatedLetterCount);
console.log(wordsWithRepeatedLetters);
};
repeatedLettersInAString();
答案 0 :(得分:5)
让我们看一下引起我注意的代码中的一个特定行:
if (userString[i].charAt(x) === userString[i].charAt(n), x!==n){
注意这里不寻常的事情:表达式中间的逗号。根据{{3}},以下是逗号运算符的工作原理:
逗号运算符计算每个操作数(从左到右)并返回最后一个操作数的值。
这里重要的一点是“返回最后一个操作数的值”。也就是说,除非x
和n
相等,否则if语句始终为真,这似乎不是您想要的行为。我认为你实际上的目标是两个表达式都是真的。如果是这种情况,则需要使用&&
运算符(JavaScript逻辑“和”运算符)代替逗号。