大概是只仓鼠 2022-02-17 14:30 采纳率: 78.7%
浏览 82
已结题

想问问这段对象数组去重怎么理解

      let obj = {};
      let peon = arr.reduce((cur,next) => {
          obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
           return cur;
     },[]) //

 obj[next.id] ? "" : obj[next.id] = true && cur.push(next);这句没看懂
  • 写回答

3条回答 默认 最新

  • 在下月亮有何贵干 前端领域优质创作者 2022-02-17 14:45
    关注

    它不是啥高级的去重,这里的意思之去重arr数组中的有重复id的对象,你没看懂的这句也很简单,就是声明一个对象obj保存id,如果这个id之前已经保存在obj中了说明已经遇到过一次同id了,就一个空字符串""啥也不干,如果不存在就保存进obj并保存到结果cur中去。

        let obj = {};
        let arr = [
          { id: 0, a: 1 },
          { id: 1, b: 5 },
          { id: 2 },
          { id: 2 },
          { id: 1 },
        ];
        let peon = arr.reduce((cur, next) => {
          obj[next.id] ? "" : (obj[next.id] = true && cur.push(next));
          return cur;
        }, []); //
        console.log(peon); //[{ id: 0, a: 1}, { id: 1, b: 5 }, { id: 2 }]
    

    用reduce看的真让人费解,用map比这个舒服多了。

        let obj = {};
        let arr = [
          { id: 0, a: 1 },
          { id: 1, b: 5 },
          { id: 2 },
          { id: 2 },
          { id: 1 },
        ];
        let res = [];
        arr.map((cur) => {
          const { id } = cur;
          obj[id] ? null : res.push(cur) && (obj[id] = true);
        });
        console.log(res); //[{ id: 0, a: 1}, { id: 1, b: 5 }, { id: 2 }]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月25日
  • 已采纳回答 2月17日
  • 创建了问题 2月17日

悬赏问题

  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题