js中,根据数组里面每个对象中某个共同字段进行分组分组。js对象数组重复值,值保留一个值的计算方法

1、js中,根据数组里面每个对象中某个共同字段进行分组分组,完整代码:(将 id 相同的数据分在同一组)

  let dataArr = [
    {id: 1, value: '值1'},
    {id: 2, value: '值2'},
    {id: 3, value: '值3'},
    {id: 1, value: '值4'},
    {id: 2, value: '值5'},
  ];
  function classify(arr){
    let map = {};
    let myArr = [];
    for(let i = 0; i < arr.length; i++){
      if(!map[arr[i].id]){
        myArr.push({
          id: arr[i].id,
          data: [arr[i]]
        });
        map[arr[i].id] = arr[i]
      } else {
        for(let j = 0; j < myArr.length; j++){
          if(arr[i].id === myArr[j].id){
            myArr[j].data.push(arr[i]);
            break
          }
        }
      }
    }
    return myArr
  }
  console.log(classify(dataArr))

打印结果:

 2、js对象数组重复值,值保留一个值的计算方法

let arr = [
    {id: 1,name: '小1',age: 11,gender: '男'},
    {id: 2,name: '小1',age: 21,gender: '男'},
    {id: 3,name: '小2',age: 23,gender: '男'},
    {id: 4,name: '小3',age: 23,gender: '女'},
    {id: 5,name: '小3',age: 3,gender: '女'},
    {id: 6,name: '小4',age: 23,gender: '男'}
]


let obj = {}
arr = arr.reduce((cur, next) => {
    obj[next.name] ? '' : (obj[next.name] = true && cur.push(next))
    return cur
}, [])

console.log(arr)

结果 :

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草样的年华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值