我曾尝试编写一个函数来执行此操作:
返回对象不区分大小写的字符串的每个字母的出现次数 //例如numOfOccurances('这很棒')=> {t:2,h:1,i:2,s:2,g:1,r:1,e:1,a:1}
function numOfOccurances(string) {
const stringLower = string.replace(/ /g, '').toLocaleLowerCase();
const counts = {};
let ch;
let count;
let i;
for (i = 0; i < stringLower.length; i++) {
ch = stringLower.charAt(i);
count = counts[ch];
counts[ch] = count ? count + 1: 1;
}
console.log(stringLower);
console.log(counts);
}
(它目前输出控制台,所以我可以看到输出)。
我得到的输出是:
Object {t: 2, h: 1, i: 2, s: 2, g: 1…}
a:1
e:1
g:1
h:1
i:2
r:1
s:2
t:2
答案 0 :(得分:1)
你可以在字符数组上做一个简单的reduce
const toLowerCase = str =>
str.toLowerCase()
const numOccurrences = str =>
Array.from(str, toLowerCase).reduce((acc, c) =>
Object.assign(acc, { [c]: c in acc ? acc[c] + 1 : 1 }), {})
console.log(numOccurrences('This is great'))
// { t: 2, h: 1, i: 2, s: 2, ' ': 2, g: 1, r: 1, e: 1, a: 1 }
&#13;
答案 1 :(得分:0)
你得到的应该是预期的结果。我在chrome devtools中得到了同样的东西。
Object {t: 2, h: 1, i: 2, s: 2, g: 1…}
具有许多属性的对象缩写,因此省略号。然后,您可以单击以展开对象并查看完整的属性列表。