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

      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);这句没看懂

它不是啥高级的去重,这里的意思之去重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 }]

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

//obj[next.id] ? "" : obj[next.id] 是三目 obj[next.id] 为 true 就是 ""=true ,否则就是obj[next.id] =true

//前面的 结果为true 那么 执行cur.push(next);


hash[next.name] ? '' : ( hash[next.name] = true && item.push(next) );

等价于上面的