比如这样一个数组:[{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
})
}
})
}

最新文章

  1. 《一个操作系统的实现》 ubuntu系统环境配置
  2. 聊一聊PV和并发
  3. 《转载》myeclipse 上安装 Maven3
  4. CSS中!important的优先级
  5. Reactjs 入门基础(二)
  6. 如何在高并发分布式系统中生成全局唯一Id(转)
  7. java虚拟机(一)——内存管理机制与OOM异常
  8. UVa 1339 Ancient Cipher --- 水题
  9. 如何使用USB安装XenServer 6.x
  10. 开源YYKit-b
  11. 使用 Azure Site Recovery 灾难恢复至 Azure 的功能现已正式发布
  12. Ubuntu 14.04 下手动安装Firefox的Flash插件
  13. Java中遍历Map对象的方法
  14. BZOJ 3261: 最大异或和( 可持久化trie )
  15. Monkey脚本API
  16. npm 安装React Devtools调试工具
  17. js 光标位置处理
  18. [转]session和cookie的区别和联系,session的生命周期,多个服务部署时session管理
  19. 【机器学习】粗糙集属性约简—Attribute Reduction
  20. web.xml 中的listener、filter、servlet 加载顺序及其【配置详解】

热门文章

  1. [源码解析] PyTorch 分布式之弹性训练(6)---监控/容错
  2. Glossary Collection
  3. The Limitations of Deep Learning in Adversarial Settings
  4. 对接网易云信音视频2.0呼叫组件集成到vue中,实现web端呼叫app,视频语音通话。
  5. MATLAB 设置示波器颜色和行列
  6. MongoDB与微服务
  7. js 鼠标经过和经过离开 导航实战案例
  8. Spark应用的结构的学习
  9. 【Maven】maven 插件开发实战
  10. 基础概念(1):cc是什么