如何统计JavaScript对象数组中按属性划分的各唯一值的出现次数
实现方案
可以直接通过数组遍历+对象计数的方式实现,代码如下:
let arr = [ {'option1':1},{'option1':1},{'option1':1}, {'option1':2},{'option1':2}, {'option1':3}, {'option2':1},{'option2':1} ] // 初始化统计结果容器 const countResult = {} arr.forEach(item => { // 取出当前对象的唯一属性名和对应属性值 const [propName, propValue] = Object.entries(item)[0] // 首次遇到该属性时初始化空统计对象 if(!countResult[propName]) { countResult[propName] = {} } // 累加计数,首次遇到该属性值时默认从0开始累加 countResult[propName][propValue] = (countResult[propName][propValue] || 0) + 1 }) console.log(countResult)
运行后输出的结果完全符合要求:
{ option1: { '1': 3, '2': 2, '3': 1 }, option2: { '1': 2 } }
逻辑说明
- 用
Object.entries(item)[0]适配你提供的单键数组元素结构,直接获取每个元素的属性名和属性值 - 两层容器初始化判断避免读取不存在属性时报错
- 计数逻辑兼容首次统计的场景,无需额外写分支判断
内容的提问来源于stack exchange,提问作者Alpha
相关产品推荐
相关产品推荐

