function calculateFrequency(text) {
return [...text].reduce((acc, char) => {
acc[char] = (acc[char] || 0) + 1;
return acc;
}, {});
}
// 示例用法
var text = "hello world";
var frequency = calculateFrequency(text);
console.log(frequency);
//打印结果
{ h: 1, e: 1, l: 3, o: 2, ' ': 1, w: 1, r: 1, d: 1 }
//输入的文本是"hello world",通过reduce方法统计了每个字符的出现频率,
//并将结果存储在对象中。注意,该示例区分了字符的大小写。
feat:
1.在这个示例中,calculateFrequency函数接收一个字符串text作为输入。使用展开运算符(...text)将字符串转换为字符数组,并对该数组使用reduce方法。
2.在reduce方法的回调函数中,累加器acc表示字符频率的对象,char表示当前处理的字符。在每次迭代中,判断累加器中是否已经存在当前字符的键,如果存在则增加频率,如果不存在则初始化频率为1。
最终,calculateFrequency函数返回一个包含字符频率的对象。
3.使用逻辑或运算符 || 的短路特性acc[char] = (acc[char] || 0) + 1,如果 acc[char] 存在(非 falsy 值),则不会计算后面的表达式,直接取 acc[char] 的值;如果 acc[char] 不存在(falsy 值),则会计算后面的表达式,将 0 作为初始频率值。