问题:
一行代码实现统计数组中每个name出现的次数。数组示例如下:
期望结果:{'哈哈':2, '哈哈1': 1,'哈哈2':2 }
var arr = [{
name: '哈哈'
},{
name: '哈哈1'
},{
name: '哈哈'
},{
name: '哈哈2'
},{
name: '哈哈2'
}]
分析:
- 提到统计频次,又要遍历数组,想到了reduce(时常用累加器)
- 一行代码实现,想到了箭头函数
具体实现:
arr.reduce((obj, item) => { return { ...obj, [item.name]: (obj[item.name] ? (obj[item.name] + 1) : 1) } }, {})
结果:
进阶:
如果要输出:
[{name: '哈哈', number:2},
{name:'哈哈1', number: 1},
{name: '哈哈2': number:2 }]
如何一行代码实现呢?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)