js 数组中的对象去掉重复的对象
创始人
2025-05-29 19:57:25
  1.  id相同的,保留第一个,其它的删除

this.defaultFileList = [
        { id: 1, name: "张三" },
        { id: 2, name: "李啊" },
        { id: 1, name: "王五" },
        { id: 3, name: "赵发电工" },
      ];

let allList1 = this.defaultFileList;

          const removeDuplicate= (allList1) => {

            let obj = {};

            allList1 = allList1.reduce((newArr, next) => {

              obj[next.id] ? "" : (obj[next.id] = true && newArr.push(next));

              return newArr;

            }, []);

            return allList1;

          };

          this.defaultFileList =  removeDuplicate(allList1)

2. 去除所有重复的-------------reduce()方法

 let arr = [
       { id: 1, name: "张三" },
        { id: 2, name: "李啊" },
        { id: 1, name: "王五" },
        { id: 3, name: "赵发电工" },

      ];

      const removeDuplicate = (arr) => {
        let obj = {};
        arr = arr.reduce((newArr, next) => {
          obj[next.key] ? "" : (obj[next.key] = true && newArr.push(next));
          return newArr;
        }, []);
        return arr;
      };

      console.log(removeDuplicate(arr));

3. 判断对象中的每一个属性,若其对应的属性值都相同,则去重 --find 

   let arr = [
        { id: 0, name: "张三", age: 23 },
        { id: 1, name: "李四", age: 23 },
        { id: 2, name: "王五", age: 24 },
        { id: 3, name: "赵六", age: 25 },
        { id: 1, name: "孙七", age: 23 },
      ];

      const removeDuplicateObj = (arr) => {
        // 缓存用于记录
        const newArr = [];
        for (const t of arr) {
          // 检查缓存中是否已经存在
          if (
            newArr.find(
              (c) =>
                c.id === t.id &&
                c.age === t.age 
            )
          ) {
            // 已经存在说明以前记录过,现在这个就是多余的,直接忽略
            continue;
          }
          // 不存在就说明以前没遇到过,把它记录下来
          newArr.push(t);
        }

        // 记录结果就是过滤后的结果
        return newArr;
      };

      console.log(removeDuplicateObj(arr));
 

4 去除所有重复的------------- for循环方法

  let arr = [
        { id: 0, name: "张三" },
        { id: 1, name: "李四" },
        { id: 2, name: "王五" },
        { id: 3, name: "赵六" },
        { id: 1, name: "孙七" },
      ];

      const removeDuplicate = (arr) => {
        let newArr = []
        let obj = {};
        for (var i = 0; i < arr.length; i++) {
          if (!obj[arr[i].key]) {
            newArr.push(arr[i]);
            obj[arr[i].key] = true;
          }
        }
        return newArr
      };

      console.log(removeDuplicate(arr));
 

相关内容

热门资讯

嘉德利过会,股权高度集中,营收... 文:权衡财经iqhcj研究员 王心怡编:许辉泉州嘉德利电子材料股份公司(简称:嘉德利)拟在沪市主板上...
证监会正式核准!中金系期货将“... 4月8日,中国证监会官网公布《关于核准中金财富期货有限公司变更控股股东并吸收合并中金期货有限公司的批...
星际之门三高管同时出走,奥特曼... 昨日,多家外媒披露了一条OpenAI的人事变动,这一次是AI基础设施业务,负责“星际之门”(Star...
美国中老年失业者开始为AI“打... 随着人工智能(AI)技术加速发展并逐步替代部分人类工作岗位,越来越多中老年专业人士在就业市场中被边缘...
长安汽车回应“上百辆网约车频现... 今日,长安汽车发布声明:近日,长安汽车关注到网络上有"上百辆网约车频现电池故障重庆一企业状告长安汽车...