JavaScript数组对象去重的几种实现方式

作者:代码拾荒

时间:2026-10-26

浏览:626

本文详细介绍JavaScript中数组对象去重的四种常用方法,包括利用Map对象、双层for循环、数组reduce方法及对象属性判断。重点解析各方法的代码实现与性能差异,并特别指出splice方法会修改原数组的注意事项,帮助开发者根据实际需求选择合适方案。

文章目录

JavaScript数组对象去重实现方案

假设存在如下数组对象数据:

    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重复的数据,最终得到去重后的结果。

JavaScript数组对象去重实现方案

方法一:利用Map对象。Map对象用于存储键值对,其中任何值(包括对象或原始值)均可作为键或值。当Map中存在重复键时,后设置的值会覆盖先前的值。

利用Map对象去重

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

方法二:使用双层for循环。

双层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');

方法三:利用数组的reduce方法。

利用reduce方法去重

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

方法四:利用对象的属性进行判断。

利用对象属性去重

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

注意:第二种方法中使用的splice方法会直接修改原数组。

在JavaScript数组操作中,以下方法会改变原数组:

修改原数组的方法说明

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

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

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章