如何用reduce来统计字符出现的频率?

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 作为初始频率值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值