如何把一个数组中的对象的key值相等的对象合成一个对象
2024-08-30 23:17:50
比如这样一个数组:[{category:"中国梦",value:"10000"},{category:"有国才有家",value:"1000"},{category:"中国梦",value:"1000"}];把category相同或相等的值的对象中的value相加组合成一个对象;
在面试中,有时候面试官会这样问,“有这样一个数组,数组由对象组成,对象中有两个key/value键值对,这样的对象有若干个,其中有些key值是相等的,请问,如何把这些key值相等的对象提取出来呢”。
在项目中,有时候会遇到一个dataList数组数据,组成该数组的元素是一个对象,对象中的某些key值是相等的,下面有个场景:做一个饼状图,需要把数据中key值相等的对象中的某个数值相加。
上面所描述的两个场景大同小异,其实现的原理也是一样的:定义一个空数组,和一个空对象,还有一个初始值等于0的index索引,在dataList数组循环体中,对空对象中作个判断,判断是否有数组红的对象下的某个key的值,有,则执行某个数值相加的操作,没有,则把该对象push进上面定义的空数组里面(比较抽象可以忽略直接阅读代码);
实现代码如下:
let dataList=[{category:"中国梦",value:"10000"},{category:"有国才有家",value:"1000"},{category:"中国梦",value:"1000"}]; console.log(handle(dataList)); function handle(dataList){
let res=[],
obj={},
index=0;
arr.forEach(item=>{
if(obj.hasOwnProperty(item.category)){
res[obj[item.category]].value=res[obj[item.category]].value+item.value;
}else{ obj[item.category]=index++;
res.push({
category:item.category,
value:item.valuw
})
}
})
}
最新文章
- 《一个操作系统的实现》 ubuntu系统环境配置
- 聊一聊PV和并发
- 《转载》myeclipse 上安装 Maven3
- CSS中!important的优先级
- Reactjs 入门基础(二)
- 如何在高并发分布式系统中生成全局唯一Id(转)
- java虚拟机(一)——内存管理机制与OOM异常
- UVa 1339 Ancient Cipher --- 水题
- 如何使用USB安装XenServer 6.x
- 开源YYKit-b
- 使用 Azure Site Recovery 灾难恢复至 Azure 的功能现已正式发布
- Ubuntu 14.04 下手动安装Firefox的Flash插件
- Java中遍历Map对象的方法
- BZOJ 3261: 最大异或和( 可持久化trie )
- Monkey脚本API
- npm 安装React Devtools调试工具
- js 光标位置处理
- [转]session和cookie的区别和联系,session的生命周期,多个服务部署时session管理
- 【机器学习】粗糙集属性约简—Attribute Reduction
- web.xml 中的listener、filter、servlet 加载顺序及其【配置详解】