【发布时间】:2016-02-07 05:35:57
【问题描述】:
我正在编写一个 JavaScript 函数,它必须接受一个字符串参数并确定具有最大数量或重复(或最频繁)非连续字符的一个或多个单词,并返回那个或多个单词。
我解决这个问题的方法是首先找到一个字符在每个单词中重复的最大次数,然后记录该次数以供稍后在函数中使用,以测试字符串中的每个单词(或数组我后来拆分的字符串);如果单词满足条件,则将其推送到我返回的数组中。
我的 maxCount 函数本身似乎可以正常工作,但是当我尝试让它与我的其他函数一起工作以获取返回最大重复字符的单词时,它在 JS Fiddle 中不起作用 - 它一直告诉我“字符串.split 不是函数” - 我承认我使用它 (string.split(string[i]).length) 逐字分析字符串中的单词的方式有点不合常规 - 我希望有一些方法可以挽救我的一些逻辑使这项工作在可以协同工作以获得我想要的结果的功能中发挥作用。
另外,我不知道我是否正确/以“合法”的方式使用 Math.max,我希望如此。我尝试将我的变量名切换为“字符串”,认为这会有所作为,但即使我的参数属于字符串种类并且它是一个正在被表示的字符串,它也没有。
这是我的 Fiddle 的链接: https://jsfiddle.net/Tamara6666/rdwxqoh6/
这是我的代码:
var maxCount = function (word) {
/// var maxRepeats = 0;
var numArray = [];
var string = word;
for (var i = 0, len = string.length; i < len; i++) {
//split the word('string') into letters at the index of i
numArray.push((string.split(string[i]).length) -1);
}
var max = Math.max(...numArray);
return max;
}
///console.log(maxCount("xxxxxxxxxxxxx"));
var LetterCount = function(string){
var repeatedChars = 0;
var wordArray=[];
var stringArray = string.split(" ");
for (var i = 0; i < stringArray.length; i++){
var eachWord = stringArray[i];
var maxRepeats = maxCount(stringArray);
if (repeatedChars < maxRepeats) {
repeatedChars = maxRepeats;
wordArray = [eachWord];
}else if (repeatedChars == maxRepeats) {
wordArray.push(eachWord);
}
}
return wordArray;
};
console.log(LetterCount("I attribute my success to cats"));
//should return ["attribute", "success"]
*** 我尝试将第一个函数映射到在空格处拆分字符串时形成的数组,但它只是返回给我一个空数组(在此示例中我也可能没有正确使用 map) ;我也尝试过使用 valueOf 从第一个函数中提取原始值,这也不起作用。我不确定此时该做什么或采取什么角度-我觉得如果我了解更多问题所在,我可以更轻松地修复它。任何帮助将非常感激。谢谢!
【问题讨论】:
标签: javascript arrays string function split