reduce高级应用:计算数组中每个元素出现的次数 { }
var str = 'abcdaabc';
console.log(str.split('')) // [ 'a', 'b', 'c', 'd', 'a', 'a', 'b', 'c' ]
let resObj = str.split('').reduce((pre, cur) => {
pre[cur] ? pre[cur]++ : pre[cur] = 1
return pre;
}, {})
console.log(resObj); // { a: 3, b: 2, c: 2, d: 1 }
- 由于设置了迭代初始值,pre的第一个值是一个空对象,此时cur为name,然后进行判断,发现在pre中有a属性,所以就将a对应的属性值赋为1;
- 如果碰到重复值,就会将该属性值加1,这样就能计算元素重复的次数了。