提示:编写一个函数,该函数将返回在输入字符串中多次出现的不区分大小写的字母字符和数字的计数。可以假定输入字符串仅包含字母(大写和小写)和数字。
Get all non-unique values (i.e.: duplicate/more than one occurrence) in an array
Get all unique values in a JavaScript array (remove duplicates)
我使用了上述问题/答案的方差,并尝试针对我正在寻找的内容进行修改-一次发现了多少个元素的计数
var arr = 'Indivisibilities';
var sorted_arr = arr.toLowerCase().split('').sort();
let count = 0;
let duplicateCount = (parm1) => {
for (var i = 0; i < sorted_arr.length - 1; i++) {
if (sorted_arr[i + 1] == sorted_arr[i]) {
count ++;
}
} return count;
}
duplicateCount(arr);
计数返回7
,期望的是2
。另外,我真的很想避免使用for循环。我希望可以使用.forEach或某种方法来完成此操作。 **我仍然非常了解编码,所以请尽量不要做任何事情:)我很感谢效率,但是我仍在尝试理解逻辑
答案 0 :(得分:2)
您可以使用reduce和filter
1
1
的值以查看重复项
var str = 'Indivisibilities';
let duplicateCount = (str) => {
let dups = str.toLowerCase().split('').reduce((op,inp)=>{
op[inp] = op[inp] || 0
op[inp]++
return op
},{})
return Object.values(dups).filter(v=>v>1).length
}
console.log(duplicateCount(str));