一个酷炫的统计字符个数的方式

const str = "askhglhaklsjdlksflkjasf"; 
// 定义一个字符串变量 'str'

const result = [...str].reduce((r, c) => (r[c]++ || (r[c] = 1), r), {});
// 定义一个名为 'result' 的常量,通过以下方式对 'str' 中的字符进行统计:
// 1. 使用 [...str] 将字符串 'str' 分解成一个字符数组。
// 2. 调用 reduce 方法遍历字符数组,对每个字符进行统计:
//    - r 是累加器对象,初始值是一个空对象 {}。
//    - c 是当前遍历的字符。
//    - r[c]++ 尝试将累加器对象中当前字符 c 的计数值增加 1。
//    - 如果字符 c 在累加器对象中尚不存在 (即 r[c] 为 undefined),则 (r[c] = 1) 将其初始化为 1。
//    - (r[c]++ || (r[c] = 1), r) 是一个复合表达式,利用逻辑运算符 || 实现条件判断:
//      - 如果 r[c] 存在 (即计数值非 0),则执行 r[c]++ 增加计数值。
//      - 如果 r[c] 不存在 (即计数值为 0 或 undefined),则执行 r[c] = 1 初始化计数值。
//    - 最终返回累加器对象 r。

console.log(result);
// 输出统计结果
  • reduce适合于“在给定上下文环境时的逐个处理”的场景
  • r[c]++||<dosomething> : 这个语法会在r[c]不存在的时候dosomething,而不会报错
  • (r,c)=>([表达式],r) ,这种表达式只会返回最后一个元素,这里是r

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部