javascript数组对象去重

javascript数组对象去重对象访问属性的方法 Map 方法 双层循环三种数组对象去重的方法

数组对象去重

数组对象就是数组里的每一项都是一个对象,例:

//需要去重的数组对象(每个对象都有唯一标识) oldArr = [ { id: 01, name: "John" }, { id: 02, name: "Doe" }, { id: 02, name: "Doe" }, { id: 03, name: "Lisa" }, { id: 04, name: "Jane" }, { id: 03, name: "Lisa" }, { id: 02, name: "Doe" }, { id: 05, name: "Eve" }, ]; //想要达到的结果 newArr = [ { id: 01, name: "John" }, { id: 02, name: "Doe" }, { id: 03, name: "Lisa" }, { id: 04, name: "Jane" }, { id: 05, name: "Eve" }, ];

几种数组对象去重的方法

1、对象访问属性的方法

总体思路:新建一个辅助对象unique,用原数组中的每个对象的唯一标识作为新对象unique的key,根据unique的key判断

function getObjectUnique(arr) { let newArr = []; //去重后的数组 let unique = {}; arr.forEach((item) => { if (!unique[item.id]) { //当数组内对象的唯一标识id不在对象unique里面就将该对象添加到newArr中 newArr.push(item); //将对象的唯一标识id作为unique对象的key,value为true unique[item.id] = true; } }); return newArr; }

2、Map方法

总体思路:set方法可以向Map对象添加新元素 map.set(key, value),然后返回整个Map结构。如果key已经有值,则键值会被更新,否则就新生成该键。values方法可以返回Map对象值的遍历器对象。

function getObjectUnique(arr) { let map = new Map(); for (let item of arr) { map.set(item.id, item); } const newArr = [...map.values()]; return newArr; }

3、双层循环

效率相对比较低,但是便于初学者理解

function getObjectUnique(arr) { for (let i = 0; i < arr.length; i++) { for (let j = i + 1; j < arr.length; j++) { if (arr[i].id == arr[j].id) { //将重复的对象删除 arr.splice(j, 1); j--; } } } return arr; }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226318.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午11:49
下一篇 2026年3月16日 下午11:50


相关推荐

  • python使用缩进来表示代码块,缩进的空格数固定为4个(python中空格怎么打)

    defcalc(numbers):sum=0forninnumbers:sum=sum+n*nreturnsumprint(calc([1,2,4]))现在返回的值又是什么呢:结果返回1为什么会返回1,仔细分析一下,代码我将return进行了缩进,这时return是基于for的每一个循环返回一个值,并且return当第一个条件满足时就不在往下执行了,所以当传入第一个1时,sum=0+…

    2022年4月10日
    220
  • [机器学习]决策树算法的MATLAB实现

    [机器学习]决策树算法的MATLAB实现机器学习 决策树算法的 MATLAB 实现这是一篇关于决策树算法的 MATLAB 实现的文章 也是我的课堂实验 学习的书籍为西瓜书 此文章包含树的建立 使用信息增益 基尼指数 绘图 预测以及剪枝 后剪枝 部分代码为老师提供 文章中所有的代码以及老师提供的代码以及实验的要求都在以下连接 需要可以自取 应该说 最好就是跟着实验要求去做 然后不懂或者看不明白再来看这里面的代码 应该会对决策树有更加深刻的了解 假如大家对决策树有什么不了解 可以问我 我会尽量解答 当然我属实能力有限 毕竟才开始学 一起努力吧 冲冲冲

    2026年3月18日
    3
  • 环境搭建04——如何选择安装的TensorFlow版本?

    环境搭建04——如何选择安装的TensorFlow版本?每个入坑深度学习的小白都可能面临 TensorFlow 的安装问题 在安装时首先面临的就是版本选择的问题 CPU 版还是 GPU 版 版本号选哪个 1GPU 版 CPU 版 判断条件结果显卡是否 NVIDIA 系列 是 GPU 否 CPU 若是 NVIDIA 系列 计算能力如何 大于等于 3 5 GPU 小于 3 5 CPU 解释 首先 查看自己电脑显卡的型号 详见 如何查看及安装

    2026年3月17日
    2
  • [TCP/IP] 基础知识总结

    [TCP/IP] 基础知识总结课堂笔记整理。IPMACARPICMP你需要掌握那些知识?

    2022年6月29日
    26
  • TCP四次挥手原理

    TCP四次挥手原理TCP协议\TCP四次挥手

    2022年6月2日
    35
  • MySQL基础知识:存储过程 – Stored Procedure

    MySQL基础知识:存储过程 – Stored ProcedureMySQL存储过程(StoredProcedure)主要的知识点:分隔符(delimiter)变量(variable)参数(parameters)分隔符(DELIMITER)MySQL通过

    2022年7月2日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号