关于JavaScript数组对象去重的几种方法

 更新时间:2023年04月21日 11:06:09   作者:小太阳...  
这篇文章主要介绍了关于JavaScript数组对象去重的几种方法,不管是map对象的特性还是reduce方法都是很好用的去重方法,需要的朋友可以参考下

数组对象如下:

    let repeatData = [
      { id: 1, name: 'sun', age: 18 },
      { id: 1, name: 'sun', age: 18 },
      { id: 2, name: 'baozi', age: 20 },
      { id: 1, name: 'sun', age: 18 },
      { id: 3, name: 'lele', age: 3 },
      { id: 2, name: 'baozi', age: 20 }
    ]

要把id一样的数据删掉,得到如下结果

在这里插入图片描述

1.利用Map对象 Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。 Map对象如果有重复的键值,则后面的会覆盖前面的

   // 利用map对象
   let map = new Map()
   repeatData.forEach(item => {
     map.set(item.id, item)
   })
   let newData = [...map.values()]
   console.log(newData, 'newData');

2.双层for循环

   for (let i = 0; i < repeatData.length; i++) {
     for(let j = i + 1; j < repeatData.length; j++) {
       if (repeatData[i].id === repeatData[j].id) {
         repeatData.splice(j, 1)
         j--
       }
     }
   }
   console.log(repeatData, 'repeatData');

3.利用数组的reduce方法

   let newObj = {}; 
   repeatData = repeatData.reduce((preVal, curVal) => {
     newObj[curVal.id] ? '' : newObj[curVal.id] = preVal.push(curVal);
     return preVal 
   }, [])
   console.log(repeatData, 'repeatData');

4.利用对象的属性

   let newObj = {}, newArr = []
   repeatData.forEach(item => {
     if (!newObj[item.id]) {
       newObj[item.id] = newArr.push(item)
     }
   })
   console.log(newArr, 'newArr');

注意:第二种方法用到的splice方法会改变原数组

js数组中下面方法会改变原数组:

方法用法
push向数组的末尾添加一个或更多元素,并返回新的长度
unshift向数组的开头添加一个或更多元素,并返回新的长度
pop删除数组的最后一个元素并返回删除的元素
shift删除并返回数组的第一个元素
sort对数组的元素进行排序
splice从数组中添加或删除元素
reverse反转数组的元素顺序

到此这篇关于关于JavaScript数组对象去重的几种方法的文章就介绍到这了,更多相关JavaScript数组对象去重内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript实现文本相似度对比

    JavaScript实现文本相似度对比

    这篇文章主要介绍了JavaScript实现文本相似度对比,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • 简单谈谈javascript中的变量、作用域和内存问题

    简单谈谈javascript中的变量、作用域和内存问题

    这篇文章主要介绍了简单谈谈javascript中的变量、作用域和内存问题的相关资料,需要的朋友可以参考下
    2015-08-08
  • 使用Js让Html中特殊字符不被转义

    使用Js让Html中特殊字符不被转义

    怎么让<textarea></textarea>之间包含的文本原封不动的显示出来呢?下面小编就为大家介绍一下具体的实现方法吧
    2013-11-11
  • js点击文本框弹出可选择的checkbox复选框

    js点击文本框弹出可选择的checkbox复选框

    这篇文章主要介绍了js点击文本框弹出可选择的checkbox复选框的相关资料,需要的朋友可以参考下
    2016-02-02
  • JS简单生成两个数字之间随机数的方法

    JS简单生成两个数字之间随机数的方法

    这篇文章主要介绍了JS简单生成两个数字之间随机数的方法,涉及javascript数值运算的相关技巧,需要的朋友可以参考下
    2016-08-08
  • echarts中几种渐变方式的具体实现方式

    echarts中几种渐变方式的具体实现方式

    在使用echarts绘制图表时,有的时候需要使用渐变色,下面这篇文章主要给大家介绍了关于echarts中几种渐变方式的具体实现方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • 微信小程序API—获取定位的详解

    微信小程序API—获取定位的详解

    这篇文章主要介绍了微信小程序API获取定位,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • JS代码编译器Monaco使用方法

    JS代码编译器Monaco使用方法

    Monaco是微软家的,支持的语言很多,还有缩略地图,有时候提示不好用然后包体很大的问题,但是这是极少数,今天小编给大家分享JS编译器Monaco使用教程,感兴趣的朋友一起看看吧
    2021-06-06
  • bootstrap日期插件daterangepicker使用详解

    bootstrap日期插件daterangepicker使用详解

    这篇文章主要为大家详细介绍了bootstrap日期插件daterangepicker的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • JS监听一个变量改变的两种方法

    JS监听一个变量改变的两种方法

    在业务中,由于项目采用微前端架构,需要通过A应用的某个值的变化对B应用中的DOM进行改变(如弹出一个Modal),第一个想到的可能是发布订阅模式,其实不如将问题缩小化,采用原生的能力去解决,本文介绍了两种方法来使用JS监听一个变量改变,需要的朋友可以参考下
    2023-11-11

最新评论