Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 递归中重复值的计数_Javascript_Arrays_Loops_Recursion - Fatal编程技术网

Javascript 递归中重复值的计数

Javascript 递归中重复值的计数,javascript,arrays,loops,recursion,Javascript,Arrays,Loops,Recursion,如何通过递归计算字符串/数组中的重复值,我知道如何通过对象的循环找到重复值和唯一值,但在这种情况下,我尝试递归它来学习我的逻辑, 这是我试过的 功能复制(word){ 让[obj,arr,count]=[{},[],0] 为了(一个字){ obj[i]=(obj[i]| | 0)+1 if(obj[i]==2){ arr.push(i); } } //控制台日志(arr); 让单词=[…单词]; 单词=[…新设置(单词)]; ////返回字 if(words.length==0){ 返回计数

如何通过递归计算字符串/数组中的重复值,我知道如何通过对象的循环找到重复值和唯一值,但在这种情况下,我尝试递归它来学习我的逻辑, 这是我试过的

功能复制(word){
让[obj,arr,count]=[{},[],0]
为了(一个字){
obj[i]=(obj[i]| | 0)+1
if(obj[i]==2){
arr.push(i);
}
}
//控制台日志(arr);
让单词=[…单词];
单词=[…新设置(单词)];
////返回字
if(words.length==0){
返回计数
}else if(包括(字[0])){
计数++
}
返回计数+重复(words.slice(1))
}

log(duplicate('xmikemk')//2
您可以分散给定的字符串,只使用第一个字符进行计数,方法是使用另一个参数来传递最后计数的值

如果没有更多的可分发项目,则进行计数并返回。否则继续递归调用

函数重复([w,…rest],计数器={}){
计数器[w]=(计数器[w]| 0)+1;
如果(!剩余长度){
返回Object.values(计数器).reduce((s,c)=>s+(c>1),0);
}
返回副本(剩余、计数器);
}

log(duplicate('xmikemk')//2
您正在使这个问题变得更加复杂。只需创建一个内部累加器方法来填充贴图并增加频率

功能复制(word){
返回重复的内部(字,{});
}
函数重复(字、映射){
if(word==null | | word.length==0){
回归映射;
}
var c=字字符(0);
映射[c]=(映射[c]| | 0)+1;
返回duplicateInternal(word.substr(1),映射);
}
var映射=重复('xmikemk');
var frequency=Object.keys(映射)
.map(key=>[key,mapping[key]])
.排序((a,b)=>{
设diff=-1*(a[1]-b[1]);
返回diff==0?a[0]。localeCompare(b[0]):diff;
});
console.log(frequency.map(x=>x.join('x')).join('\n'))
。作为控制台包装器{
排名:0;
最大高度:100%!重要;

}
我们不能只使用一个参数而不编辑参数吗?你想如何计算值?就像我在下面循环它然后递归:D,这是不可能的吗?你没有真正的递归,因为你取所有字符(而不是单词)然后只计算实际值(就递归解决方案而言,这有点欺骗)嗯,好吧,我来看看,为什么
rest
变量是切片??我只是想学习如何递归:D。我很欣赏你的答案,在这里用不同于大师的答案学习是很有用的:D