先看看数组对象的形式:

let arrObj = [{ name: "小红", id: 1 },{ name: "小橙", id: 1 },{ name: "小黄", id: 4 },{ name: "小绿", id: 3 },{ name: "小青", id: 1 },{ name: "小蓝", id: 4 }
];

下面是我想要得到的结果,就是把id的值一样的对象删掉

方法一:双层for循环
两两比较,如果后一个对象的id值和前一个对象的id值相等,就把后面的对象删除

let arrObj = [{ name: "小红", id: 1 },{ name: "小橙", id: 1 },{ name: "小黄", id: 4 },{ name: "小绿", id: 3 },{ name: "小青", id: 1 },{ name: "小蓝", id: 4 }
];
function fn1(tempArr) {for (let i = 0; i < tempArr.length; i++) {for (let j = i + 1; j < tempArr.length; j++) {if (tempArr[i].id == tempArr[j].id) {tempArr.splice(j, 1);j--;};};};return tempArr;
};
console.log(fn1(arrObj));

方法二:indexOf()
定义一个数组存储id的值,然后逐个比较,把id值重复的对象删除即可

let arrObj = [{ name: "小红", id: 1 },{ name: "小橙", id: 1 },{ name: "小黄", id: 4 },{ name: "小绿", id: 3 },{ name: "小青", id: 1 },{ name: "小蓝", id: 4 }
];
function fn2(tempArr) {let newArr = [];for (let i = 0; i < tempArr.length; i++) {if (newArr.indexOf(tempArr[i].id) == -1) {newArr.push(tempArr[i].id);} else {tempArr.splice(i, 1);};};return tempArr;
};
console.log(fn2(arrObj));

方法三:对象访问属性的方法
采用对象访问属性的方法,判断属性值是否存在

let arrObj = [{ name: "小红", id: 1 },{ name: "小橙", id: 1 },{ name: "小黄", id: 4 },{ name: "小绿", id: 3 },{ name: "小青", id: 1 },{ name: "小蓝", id: 4 }
];
function fn3(tempArr) {let result = [];let obj = {};for (let i = 0; i < tempArr.length; i++) {if (!obj[tempArr[i].id]) {result.push(tempArr[i]);obj[tempArr[i].id] = true;};};return result;
};
console.log(fn3(arrObj));

方法四:Map()
has方法可以判断Map对象中是否存在指定元素,有则返回true,否则返回false

set方法可以向Map对象添加新元素 map.set(key, value)

values方法可以返回Map对象值的遍历器对象

let arrObj = [{ name: "小红", id: 1 },{ name: "小橙", id: 1 },{ name: "小黄", id: 4 },{ name: "小绿", id: 3 },{ name: "小青", id: 1 },{ name: "小蓝", id: 4 }
];
let map = new Map();
for (let item of arrObj) {if (!map.has(item.id)) {map.set(item.id, item);};
};
arr = [...map.values()];
console.log(arr);

原文链接:https://blog.csdn.net/weixin_55992854/article/details/120386515

数组对象去重的四种方式相关推荐

  1. 数组对象去重的四种方式(强推最后一种!!!)

    哈喽哈喽,我又来了. 今天分享的是数组对象去重的方式,先看看数组对象的形式: let arrObj = [{ name: "小红", id: 1 },{ name: "小 ...

  2. Java 数组转List的四种方式

    Java 数组转List的四种方式 第一种方式(未必最佳):使用ArrayList.asList(strArray) ​ 使用Arrays工具类Arrays.asList(strArray)方式,转换 ...

  3. PHP数组循环遍历的四种方式

    [(重点)数组循环遍历的四种方式]  1.使用for循环遍历数组      conut($arr);用于统计数组元素的个数.      for循环只能用于遍历,纯索引数组!!!!      如果存在关 ...

  4. stream去重_重复数据如何处理?List集合去重的四种方式

    List集合在Java日常开发中是必不可少的,只要懂得运用各种各样的方法就可以大大提高我们开发的效率,适当活用各种方法才会使我们开发事半功倍.但是,有时候难免会遇到集合里的数据是重复的,需要进行去除. ...

  5. JavaScript:数组对象去重的几种方法

    数组对象去重 元素是对象类型的数组的去重我这粗分为两类,一类是当数组中整个元素一样时的去重(这里说的一样是指元素对象中的属性和值都一样),第二类是,元素对象中的某一个属性的值一样时进行去重 // 通用 ...

  6. Java中数组转List的四种方式

    第一种方式(未必最佳):使用ArrayList.asList(strArray) 使用Arrays工具类Arrays.asList(strArray)方式,转换完成后,只能对List数组进行查改,不能 ...

  7. JavaScript对象创建对象的四种方式

    1.字面量的方式 2.调用系统的构造函数 3.自定义构造函数的方式 4.工厂模式创建对象 <!DOCTYPE html> <html lang="en"> ...

  8. Java开发技巧 数组转List的四种方式总结

    第一种 Arrays.asList 即 Java.util 提供的 Arrays 中的 asList 方法,可以直接将一般的字符串数组以及包装类后的结果做直接转换. 需要注意的是 :通过这种方式得到的 ...

  9. js数组去重的四种方式

    // 删除重复的 function only(arr){for(var i=0;i<arr.length;i++){for(var j = i+1;j<arr.length;j++){if ...

最新文章

  1. java decodeurl,java decodeURIComponent
  2. css --- 圣杯布局
  3. opencv qt5安装linux,Ubuntu OpenCV安装和设置(Qt5吗?)
  4. ios 控件徽章_一行代码给你的控件加上徽章(Badge)
  5. mysql 临时表 中文_MySQL 临时表
  6. 客户机无法上网,ping 127.0.0.1提示unable to contact IP driver ,error code2
  7. Python2.7学习笔记-定义函数、filter/map/reduce/lambda
  8. 详解Python函数如何重载?
  9. 解决yum安装gcc报错:Error: Package: glibc-headers-2.17-317.el7.x86_64
  10. mysql冒号_mysql语句中的冒号是什么意思?
  11. Java操作图片大全
  12. 点、线、圆、矩形、抛物线的类定义_德语词汇-数学类
  13. 基于树莓派和tensorflow的物体识别
  14. [Java] 什么是IoC?什么是DI?它们的区别是什么?
  15. 车载导航进阶「不输」手机,哪些供应商在领跑导航引擎赛道
  16. Hackable Projects (可拓展的项目)
  17. Flutter 必须知道的布局规则
  18. Windows九大常用密码
  19. Java输入处理之spit和indexOf
  20. 《程序员脱发自救指南》笔记--头发基础知识

热门文章

  1. 01 AppStore付费App的数据可视化分析
  2. as608指令c语言,单片机+AS608的使用,并带程序
  3. 谈谈JVM GC 收集器
  4. COSCon'21 开源年会,诚邀合作社区加入!
  5. 欢(nan)乐(shou)纪中培训(Day 2)
  6. 系统类型中的:标准、VHD和VHDX是什么?
  7. 常见的授权错误及原因
  8. 支付宝接入网联,对我们有什么影响?
  9. 机器学习03 K值的选择
  10. 【碟辉幕流】今天是市场杀伤力最强的一天!