在下面的代码中,为什么每个字符看起来都等于其他每个字符?
编写一个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();
Sam Hanley.. 5
让我们看一下引起我注意的代码中的一个特定行:
if (userString[i].charAt(x) === userString[i].charAt(n), x!==n){
注意这里不寻常的东西:表达式中间的逗号.根据MDN,以下是逗号运算符的工作原理:
逗号运算符计算其每个操作数(从左到右)并返回最后一个操作数的值.
这里重要的一点是"返回最后一个操作数的值".也就是说,if语句总是为真,除非x
并且n
相等,这似乎不是你想要的行为.我认为你实际上的目标是两个表达式都是真的.如果是这种情况,则需要使用&&
运算符(JavaScript逻辑"和"运算符)代替逗号.
让我们看一下引起我注意的代码中的一个特定行:
if (userString[i].charAt(x) === userString[i].charAt(n), x!==n){
注意这里不寻常的东西:表达式中间的逗号.根据MDN,以下是逗号运算符的工作原理:
逗号运算符计算其每个操作数(从左到右)并返回最后一个操作数的值.
这里重要的一点是"返回最后一个操作数的值".也就是说,if语句总是为真,除非x
并且n
相等,这似乎不是你想要的行为.我认为你实际上的目标是两个表达式都是真的.如果是这种情况,则需要使用&&
运算符(JavaScript逻辑"和"运算符)代替逗号.