【发布时间】:2016-03-11 20:44:56
【问题描述】:
我已经解决这个问题几个小时了,我已经尽我所能,尽我所能来解决这个挑战,但我就是不知道到底出了什么问题。我不断收到“意外令牌非法”:http://jsfiddle.net/6n8apjze/14/
和“TypeError:无法读取 null 的属性 'length'”:http://goo.gl/LIz89F
我认为问题在于 howManyRepeat 变量。我不明白为什么当很明显 word 是 str 中的一个词时,我无法读取 null 的长度...
我想到了:
word.toLowerCase().split("").sort().join("").match(/([.])\1+/g).length
...这里:Get duplicate characters count in a string
挑战:
使用 JavaScript 语言,让函数 LetterCountI(str) 获取 str
参数被传递并返回第一个字数最多
重复的字母。例如:“今天,是有史以来最伟大的一天!”应该返回
最好的,因为它有 2 个 e(和 2 个 t),而且它比以往任何时候都更早
有2个e。如果没有重复字母的单词返回-1。话会
用空格隔开。
function LetterCountI(str){
var wordsAndAmount={};
var mostRepeatLetters="-1";
var words=str.split(" ");
words.forEach(function(word){
// returns value of how many repeated letters in word.
var howManyRepeat=word.toLowerCase().split("").sort().join("").match(/([.])\1+/g).length;
// if there are repeats(at least one value).
if(howManyRepeat !== null || howManyRepeat !== 0){
wordsAndAmount[word] = howManyRepeat;
}else{
// if no words have repeats will return -1 after for in loop.
wordsAndAmount[word] = -1;
}
});
// word is the key, wordsAndAmount[word] is the value of word.
for(var word in wordsAndAmount){
// if two words have same # of repeats pick the one before it.
if(wordsAndAmount[word]===mostRepeatLetters){
mostRepeatLetters=mostRepeatLetters;
}else if(wordsAndAmount[word]<mostRepeatLetters){
mostRepeatLetters=mostRepeatLetters;
}else if(wordsAndAmount[word]>mostRepeatLetters){
mostRepeatLetters=word;
}
}
return mostRepeatLetters;
}
// TESTS
console.log("-----");
console.log(LetterCountI("Today, is the greatest day ever!"));
console.log(LetterCountI("Hello apple pie"));
console.log(LetterCountI("No words"));
非常感谢任何指导。谢谢!! ^____^
【问题讨论】:
-
[.]匹配文字点符号,不是任何字母而是换行符。 -
哦,关于正则表达式。是的,我还在学习这些。因此,如果我想匹配单词是否有任何重复的字母,我可以做 /([a-z])\1+/g 吗?我想我试过了,大约一个小时前出现了错误。
-
this code 是否按预期工作? jsfiddle.net/v3czs6zm。它输出
-----, greatest, apple, -1。 -
哦,你是对的,它现在几乎可以工作了!我没有得到你得到的。我得到了----最好的苹果-1。我看到你改变了(。)它和我的真的不同。我应该得到 --- 最棒的 Hello 和 -1...我想我需要在我的 for in 循环中改变一些东西。不...不是这样...
-
(.) 与 [.] 有何不同?
标签: javascript regex function loops object