数组对象去重的四种方式

数组对象去重的四种方式哈喽哈喽 我有来了 今天要写的是数组对象去重的方式 先看看数组对象的形式 letarrObj name 小红 id 1 name 小橙 id 1 name 小黄 id 4 name 小绿 id 3 name 小青 id 1 name 小蓝 id 4 下面是我想要得到的结果 就是把 id 的值一样的对象删掉方法一

哈喽哈喽,我又来了。

今天分享的是数组对象去重的方式,先看看数组对象的形式:

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://javaforall.net/213087.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午6:35
下一篇 2026年3月18日 下午6:35


相关推荐

  • BS架构与CS架构的区别(详细讲解)

    BS架构与CS架构的区别(详细讲解)1.CS=Client-Server=客戶端-服務器。例子:QQ,迅雷,快播,暴風影音,各種網絡遊戲等等。只要有和服務器通訊的都算。2.BS=Browser-Server=浏览器-服務器。例子:所有的网站都是bs。C/S系统结构   B/S系统结构 1、客户端要求C/S客户端的计算机电脑配置要求较高。B/S客户端的计算…

    2022年6月29日
    42
  • AJAX请求的4个步骤

    AJAX请求的4个步骤一、创建XHR对象XMLHttpRequest(W3C标准)现在的浏览器基本都支持XHR对象,但IE5,6是例外。这时候就需要兼容性的写法二、监听XHR状态改变事件onreadystatechange()事件用于监听状态的变化当readyState等于4时,处于完成状态,XMLHttpRequest对象读取服务器响应结束当status等于200时,表示请求成功。这时候就可以进行对数据的处理。三、创建请求消息,连接服务器第一个参数为请求方式,第二个参数为所连接的服务器,第三个参数t

    2022年5月17日
    73
  • 保姆级 Gemini 3.0 使用教程!国内可用 !

    保姆级 Gemini 3.0 使用教程!国内可用 !

    2026年3月13日
    2
  • html超链接悬浮,下列css代码,能控制鼠标悬浮其上的超链接样式

    html超链接悬浮,下列css代码,能控制鼠标悬浮其上的超链接样式摘要:下列不属特性品的主要质量于食。标悬置为将E1端道化的命令是非信方式口设。新中国成0年立7来,上的式特色民主协商中国局面)的成(已形,特色提供中国主义制度障要保为建完善立和了重社会。…下列不属特性品的主要质量于食。变动成本法下,制鼠包括期间成本。标悬置为将E1端道化的命令是非信方式口设。在全基础竣后的售的()内程报业务完成后交付应数据。些积制度作用建立极的有哪务员和完回避善公。特点休的公务…

    2022年7月19日
    16
  • 都在小龙虾、小龙虾

    都在小龙虾、小龙虾

    2026年3月16日
    2
  • python中的sys模块函数

    python中的sys模块函数Sys模块

    2022年7月18日
    22

发表回复

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

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