原生JS关于数组对象相同属性的相加与数组去重

1,741 阅读1分钟

大家好,我这里将给大家写一个小demo,在开发中经常会遇到。

数组对象相同属性的相加

 let obj = {};
 const arr = [
 { name: 'A', stock: 1 }, 
 { name: 'B', stock: 1 }, 
 { name: 'A', stock: 33 }, 
 { name: 'B', stock: 2 }, 
 { name: 'C', stock: 0 }
 ];
// 第一种方式
 arr.forEach(v => obj[v.name] = obj[v.name] === undefined ? v.stock : obj[v.name] + v.stock)
 console.log(obj) 
// 第二种方法
arr.forEach(v=>{
 	if (obj.hasOwnProperty(v.name)) {
         obj[v.name] += v.stock
     } else{
        obj [v.name] = v.stock
     }
 })
console.log(obj)

在这里插入图片描述

数组去重

//1 reduce去重,针对数组对象
let person = [
      {id: 0, name: "A"},
      {id: 1, name: "B"},
      {id: 2, name: "C"},
      {id: 3, name: "D"},
      {id: 1, name: "E"},
      {id: 2, name: "F"},   
 ];

 let obj = {};
 let peon = person.reduce((cur,next) => {
     obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
     return cur;
 },[]) //设置cur默认类型为数组,并且初始值为空的数组
 console.log(peon);
 //2 Set去重,针对纯数组元素
 let arr = [1,2,2];
 console.log([...new Set(arr)]); // [1,2]

欢迎关注我的公众号「前端历劫之路」 ​

回复关键词电子书,即可获取近12本前端热门电子书。 ​

回复关键词红宝书第4版,即可获取最新《JavaScript高级程序设计》(第四版)电子书。 ​

你还可以加我微信,我拉拢了很多IT大佬,创建了一个技术交流、文章分享群,欢迎你的加入。 ​

  • 作者:Vam的金豆之路

  • 主要领域:前端开发

  • 我的微信:maomin9761

  • 微信公众号:前端历劫之路