【发布时间】:2019-06-21 11:48:03
【问题描述】:
如何通过递归计算字符串/数组中的重复值,我知道如何通过对象的循环找到重复值和唯一值,但在这种情况下,我尝试递归它来学习我的逻辑, 这是我尝试过的
function duplicate(word) {
let [obj, arr, count ] = [{},[],0]
for (i of word) {
obj[i] = (obj[i] || 0) + 1
if (obj[i] == 2) {
arr.push(i);
}
}
// console.log(arr);
let words = [...word];
words = [...new Set(words)];
// // return word
if (words.length === 0) {
return count
} else if (arr.includes(words[0])) {
count++
}
return count + duplicate(words.slice(1))
}
console.log(duplicate('xmikemk')) // 2
如果找到的值 2 次,我尝试创建对象拳头并推送到 newArr, 然后我尝试在下面再次设置单词以显示唯一值,然后我递归它,当我控制台记录它时,下面的切片方法递归并且不起作用,这就是为什么我得到的输出是0,我的代码有什么问题?我对那个条件有错吗?
那个变量词有 = ('xmikemk') which has 2 duplicate words, m and k , so the output i want is2`
【问题讨论】:
标签: javascript arrays loops recursion