JS 如何知道一串字符串中每个字母出现的次数?

var arrString = 'abcdaabddcca';
arrString.split('').reduce(function (prev, curr) {
    prev[curr] ? prev[curr]++ : prev[curr] = 1;
    return prev;
}, []);
// [a: 4, b: 2, c: 3, d: 3]
var prev = [];
var curr = 'a';
prev[curr] = 1;
prev // [a: 1] 
prev.length // 0
prev[curr]++
prev // [a: 2]


 
虽然计算了 重复次数  但 prev = [a:2] 是无效呢还是不无效  


浏览器的控制面板直接敲 [a:2] 立马报错呢

 


var arrString = 'abcdaabddcca';
arrString.split('').reduce(function (prev, curr) {
    prev[curr] ? prev[curr]++ : prev[curr] = 1;
    return prev;
}, {});
{a: 4, b: 2, c: 3, d: 3}

其实只要初始化数据 定义 prev 为{} 就比初始化 【】 有效   ,这也算是 reduce 优先解决办法吧
 

欢迎交流哦!!!

基本概念
reduce()方法接受一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值

reduce为数组中的每个元素依次执行回调函数,不包括数组中被删除或从未被赋值的元素,接受四个参数:初始值(或者上一次回调函数的返回值)

当前元素值,当前索引,调用reduce的数组

语法
arr.reduce(callback,[initialValue])

callback(执行数组中每个值的函数,包含四个参数)        
previousValue(上一次调用回调函数返回的值,或者是提供的初始值(initialValue))
currentValue(数组中当前被处理的元素)
index(当前元素在数组中的索引)
array(调用reduce的数组)           
initialValue(作为第一次调用callback的第一个参数,也就是初始值)

var dis = {
    math: 0.5,
    chinese: 0.3,
    english: 0.2
};
var sum = result.reduce(function (prev, curr) {
    return curr.score + prev;
}, -10);
var qsum = result.reduce(function (prev, curr) {
    return curr.score * dis[curr.subject] + prev;
}, 0); 
 
// JS 对象取值的方法有两种
var obj = {a: 1, b: 4};
第一种
obj.a  // 1
第二种
obj['a'] // 1
第一种性能上优于第二种,但是第一种不能动态取值,第二种中括号里面可以是变量,也可以配合模板字符串使用`${key}`
var c = 'a';
obj[c] // 1
 


 

猜你喜欢

转载自blog.csdn.net/zhan_lijian/article/details/84790706