对象数组去重

 var tmp = [{
        id: 1,
        value: 'a'
      },
      {
        "id": 2,
        "value": "b"
      },
      {
        "id": 1,
        "value": "a"
      }
    ]
    
    // 根据数组元素的id判断该元素是否已存在

    // 方法1
    function arrayRemval(arr) {
      let result = [];
      let obj= {};
      for(let i=0;i<arr.length;i++) {
        let item = arr[i];
        if(!obj[item.id]) {
          result.push(item)
          obj[item.id] = true;
        }
      }
      return result;
    }
    
    
    // 方法2
    function arrayRemval(arr) {
      let result = [];
      let keys= []
      for(let i=0;i<arr.length;i++) {
        let item = arr[i];
        if(!keys.includes(item.id)) {
          result.push(item)
          keys.push(item.id);
        }
      }
      return result;
    }

    console.log(arrayRemval(tmp));    //(2) [{id: 1, value: "a"},{id: 2, value: "b"}]


// 业务中的需求,将分组中的商品去重
  let selectedGroup= [
      {id: '1',name:'水果类',productList:[
        {productId:'001',productName:'苹果'},
        {productId:'002',productName:'香蕉'},
        {productId:'003',productName:'橘子'},
      ]},
      {id: '2',name:'护肤品类',productList:[
        {productId:'004',productName:'葡萄'},
        {productId:'005',productName:'芒果'},
        {productId:'003',productName:'橘子'},
      ]}
    ]

    function uniqe() {
      let list = [];    //二维数组
      let productList = []      //存放去重后的商品 
      selectedGroup.forEach(ele=>{
        list.push(ele.productList)
      })
      let productIdList = [];    //用于记录当前有效的商品元素id
      list.forEach(ele=>{
        if(ele.length>0) {
          ele.forEach(product=>{
            if(!productIdList.includes(product.productId)) {
              productIdList.push(product.productId)
              productList.push(product)
            }
          })
        }
      })
      return productList
    }

    let result = uniqe()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wen_文文

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

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

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

打赏作者

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

抵扣说明:

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

余额充值