两个对象数组去重的3种方法

  • 前言
  • 问题描述
  • 解决方案一
  • 解决方案二
  • 解决方案三

前言

前段时间写过JavaScript数组去重最简单的 4 种方案,里面的数组元素是基本类型。本文要讲的数组元素是对象,也就是引用类型。引用类型与基本类型最大的区别是引用类型赋值的是指针,而不是真正的值。

问题描述

请在两个对象数组中找到其中一个与另一不重复的对象。然后追加到另一个数组中。比如在数组1[{a:1},{a:2},{a:3},{a:5}]与数组2[{a:1},{a:2},{a:4}]中找到数组1中不与数组2重复的对象{a:3}和{a:5},最后得到的数组2为[{a:1},{a:2},{a:4},{a:3},{a:5}]。

解决方案一

思路:通过增加属性的方式。

    var arr1 =[{a:1},{a:2},{a:3},{a:5}];var arr2 =[{a:1},{a:2},{a:4}];arr1.map((item1)=>{arr2.map((item2)=>{if(item1.a == item2.a){//添加属性用来标记相同的对象item1.isRepeat = true;}})});arr1.map((item)=>{//通过标记筛选对象if(!item.isRepeat){arr2.push(item);}});console.log(arr2);//[{a:1},{a:2},{a:4},{a:3},{a:5}];

打印输出时间:0.5ms

解决方案二

思路:直接轮循两个数组,取出不包含数组2元素的数组1,然后将数组1合并到数组2。

    var arr1 =[{a:1},{a:2},{a:3},{a:5}];var arr2 =[{a:1},{a:2},{a:4}];for (var i = 0; i < arr2.length; i++) {for (var j = 0; j < arr1.length; j++) {if (arr2[i].a == arr1[j].a) {arr1.splice(j, 1);}}}arr2 = arr2.concat(arr1);console.log(arr2);//[{a:1},{a:2},{a:4},{a:3},{a:5}]

打印输出时间:0.3ms

解决方案三

思路:将两个数组合并,然后两层循坏。

    var arr1 =[{a:1},{a:2},{a:3},{a:5}];var arr2 =[{a:1},{a:2},{a:4}];//将arr1与arr2合并。arr2 = arr2.concat(arr1);for (var i = 0; i < arr2.length; i++) {for (var j = i+1; j < arr2.length; j++) {if (arr2[i].a == arr2[j].a) {arr2.splice(j, 1);}}}console.log(arr2);//[{a:1},{a:2},{a:4},{a:3},{a:5}]

打印输出时间:0.8ms

注:由于数据量很小,以上打印时间仅供参考。

两个对象数组去重的3种方法相关推荐

  1. 数组去重的12种方法总结

    数组去重的11种方法 (1)ES5常用:利用for嵌套for,然后splice去重 function unique(arr) {for (var i = 0; i < arr.length; i ...

  2. JavaScript数组去重的五种方法

    JavaScript数组去重的五种方法 先简单准备一个数组,用于方法的实验: let array = [1,1,2,3,4,4,1,5,6,6,7,7,7]; console.log(`去重前的数组: ...

  3. js数组去重(9种方法),你都会了吗?

    以下共有九种数组去重的方式和详解(包含对象数组去重): 1.利用Array.from(new Set)去重: // 1.利用set去重 // Set是es6新增的数据结构,似于数组,但它的一大特性就是 ...

  4. 数组去重--这几种方法够不?

    数组去重,是校招面试的必考知识点.简单的说,数组去重就是将一个数组中的相同的元素删除,只保留其中的一个.这里的相同其实是一个陷阱,有好多同学只认为值相等即为相同,而忽略类类型的判断.所以大家在进行数组 ...

  5. JS----JavaScript数组去重(12种方法,史上最全)

    数组去重的方法 一.利用ES6 Set去重(ES6中最常用) Set 不包含重复元素的值的集合 Map 双列集合 键值对 与object的区别 : object中的key只能是string类型 而Ma ...

  6. JavaScript中数组去重的几种方法整理

    本人菜鸡,前两天去面试,发现再次碰到数组去重这道面试题,比较常见.能够达到去重效果的方法有好几个,感觉有必要整理一下其中几种常见实现: 1,思路:创建一个空数组,然后循环需要去重的数组,对比创建的数组 ...

  7. js数组 去重的5种方法

    // 数组去重 var arr = [1, 2, 2, 3, 4, 4, 5, 6, 7, 7, 4, 3, 5, 7, 11, 12, 11]; var newArr = [];//方法1最优 se ...

  8. js 数组去重的几种方法

    1. new Set 的两种方法 let arr = [1, 0, 0, 2, 9, 8, 3, 1];function unique(arr) {return Array.from(new Set( ...

  9. es6 数组去重_JS数组去重的9种方法(包括去重NaN和复杂数组类型)

    其实网上已经有很多js数组的去重方法,但是我看了很多篇并自己通过代码验证,发现都有一些缺陷,于是在研究多篇代码之后,自己总结了9种方法,如果有哪里不对请及时纠正我哈~ 测试代码 let arr1 = ...

最新文章

  1. Vue项目中跨域的几种方式
  2. Oracle Dataguard之Real-Time Apply
  3. SQLite 运算符(http://www.w3cschool.cc/sqlite/sqlite-operators.html)
  4. 远程桌面无法复制文本时解决办法
  5. Web前端开发培训就业前景好不好?
  6. java中多态案例工厂类,Java中构造器内部的多态方法的行为实例分析
  7. 【java】打印一个序列,第一项和第二项都是1,以后的每一项都是前面两项的和。
  8. PHP树形结构数据增加每层的级别
  9. JAVA必会算法--二分查找法
  10. endnotex8使用教程_EndNote X8使用教程
  11. u12无线网卡linux驱动装不上,ubutu16.04 安装Tenda u12无线网卡驱动
  12. JAVA链表中的回文链表结构
  13. vue-awsome-swiper安装和css引入问题
  14. 好用的免费CMS网站模板源码下载推荐
  15. pt-archiver 命令
  16. C语言程序员个人简历范文,程序员求职放大招!牛人用C语言写简历
  17. 丘成桐女子中学生数学竞赛结果出炉,人大附中拿下金奖,上海4人入围
  18. 扫地阿姨看完都学会了!写给即将正在找工作的Java攻城狮,砥砺前行!
  19. BigWorld用到的其他库
  20. AiBote 2022 新研发的自动化框架,支持 Android 和 Windows 系统。速度非常快

热门文章

  1. 结合CAP理论分析ElasticSearch的分布式实现方式
  2. 云智能电销外呼系统,低成本解决中小企业销售难题
  3. oracle数据库some,【案例】Oracle报错Some indexes or index [sub]partitions of table VAS.TAB_PUB_CALLLOG...
  4. 华为荣耀9升级鸿蒙os,华为荣耀9款手机可升级EMUI 11了!优先升鸿蒙OS
  5. 【计算机体系】LFU与LRU的区别
  6. attiny13a程序实例_基于ATtiny13的手电筒(头灯)控制电路和程序
  7. 阿里云弹性伸缩在生产环境中的实战应用
  8. 2019 最前沿的几个 Flutter 实践:微信、咸鱼、美团
  9. 单片机课程学习的数字时钟系统模块化设计研究
  10. win10系统更新完不能开机怎么办【系统天地】