电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

JS中6個對象數組去重的方法

瀏覽:7日期:2022-06-13 13:36:27
目錄前言方法一:使用 .filter() 和 .findIndex() 相結合的方法方法二:使用 .reduce() 方法方法三:使用 .forEach() 和 .some() 相結合的方法方法四:使用 Map方法五:Object.create()方法六:For const of 和 find 結合針對多個屬性進行去重結束前言

大家好,關于對象數組去重的業務場景,想必大家都遇到過類似的需求吧,針對這樣的需求,你是怎么做的呢。

下面我就先和大家討論下基于對象的某個屬性如何去重。

方法一:使用 .filter() 和 .findIndex() 相結合的方法

使用 filter() 方法過濾掉重復的元素,使用 findIndex() 方法判斷對象是否重復,代碼如下:

const arr = [{id: 1, name: 'a'}, {id: 2, name: 'b'}, {id: 1, name: 'c'}, {id: 3, name: 'd'}];const uniqueArr = arr.filter((item, index) => arr.findIndex(i => i.id === item.id) === index);方法二:使用 .reduce() 方法

使用 reduce() 方法維護一個累加器,通過對象的屬性來判斷是否重復,代碼如下:

const arr = [{id: 1, name: 'a'}, {id: 2, name: 'b'}, {id: 1, name: 'c'}, {id: 3, name: 'd'}];const uniqueArr = arr.reduce((acc, curr) => { if (!acc.find(item => item.id === curr.id)) { acc.push(curr); } return acc;}, []);方法三:使用 .forEach() 和 .some() 相結合的方法

使用 forEach() 方法遍歷數組,使用 some() 方法判斷是否重復,代碼如下:

const arr = [{id: 1, name: 'a'}, {id: 2, name: 'b'}, {id: 1, name: 'c'}, {id: 3, name: 'd'}];const uniqueArr = [];arr.forEach(item => { if (!uniqueArr.some(i => i.id === item.id)) { uniqueArr.push(item); }});方法四:使用 Map

使用 Map 結構去重對象數組時,需要借助 array.map() 函數將對象數組進行轉換,示例代碼如下:

const arr = [{id: 1, name: 'a'}, {id: 2, name: 'b'}, {id: 1, name: 'c'}, {id: 3, name: 'd'}];const uniqueArr = [...new Map(arr.map(item => [item.id, item])).values()];方法五:Object.create()

使用Object.create(),按照對象的屬性來判斷是否重復,代碼如下

const arr = [{id: 1, name: 'a'}, {id: 2, name: 'b'}, {id: 1, name: 'c'}, {id: 3, name: 'd'}];const uniqueArr = arr.filter(function (item) { return !this[item.id] && (this[item.id] = true);}, Object.create(null));方法六:For const of 和 find 結合

這個方法的思想與方法3類似 ,其思路結構如下:

創建一個空的唯一數組來存儲唯一對象。循環遍歷數組中的對象。對于每個對象,如果它不是重復的,則將其添加到唯一數組。否則,忽略它const arr = [{id: 1, name: 'a'}, {id: 2, name: 'b'}, {id: 1, name: 'c'}, {id: 3, name: 'd'}];const unique = [];for (const item of arr) { const isDuplicate = unique.find((obj) => obj.id === item.id); if (!isDuplicate) { unique.push(item); }}針對多個屬性進行去重

有時候,您可能希望僅當對象具有兩個或多個具有相同值的屬性時才將其視為重復對象——多個屬性值相同。

對于這種情況,我們可以將上述方法進行稍微調整就可以進行使用,有部分方法可能不適用,有哪些不合適,這個問題留給大家,歡迎大家在評論區討論。

我們先使用 .filter() 和 .findIndex() 相結合的方法嘗試下,看看如何操作:

const arr = [{id: 1, name: 'a'}, {id: 2, name: 'b'}, {id: 1, name: 'a'}, {id: 3, name: 'd'}];const uniqueArr = arr.filter((item, index) => arr.findIndex(i => i.id === item.id&& i.name === item.name) === index);

我們再使用 For const of 和 find 結合的方法,也能實現同樣的效果

const arr = [{id: 1, name: 'a'}, {id: 2, name: 'b'}, {id: 1, name: 'a'}, {id: 3, name: 'd'}];const unique = [];for (const item of arr) { const isDuplicate = unique.find((obj) => obj.id === item.id && obj.name ==item.name); if (!isDuplicate) { unique.push(item); }}console.log(unique)結束

其他幾個方法的改造,歡迎大家作為練習進行嘗試,這里就不再一一舉例了,今天的分享就到這里,這些方法都可以實現對象數組的去重,具體使用哪種方法取決于個人的喜好和項目的需求,如果你有其他的方法,歡迎大家在評論區補充,感謝你的關注。

到此這篇關于JS中6個對象數組去重的方法的文章就介紹到這了,更多相關JS對象數組去重內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 阳光1号桔柚_无核沃柑_柑橘新品种枝条苗木批发 - 苧金网 | 闪蒸干燥机-喷雾干燥机-带式干燥机-桨叶干燥机-[常州佳一干燥设备] | 管家婆-管家婆软件-管家婆辉煌-管家婆进销存-管家婆工贸ERP | 橡胶接头_橡胶软接头_套管伸缩器_管道伸缩器厂家-巩义市远大供水材料有限公司 | 菲希尔X射线测厚仪-菲希尔库伦法测厚仪-无锡骏展仪器有限责任公司 | 涡街流量计_LUGB智能管道式高温防爆蒸汽温压补偿计量表-江苏凯铭仪表有限公司 | 北京亦庄厂房出租_经开区产业园招商信息平台 | 不锈钢酒柜|恒温酒柜|酒柜定制|酒窖定制-上海啸瑞实业有限公司 | 山东集装箱活动房|济南集装箱活动房-济南利森集装箱有限公司 | 锂离子电池厂家-山东中信迪生电源 | 压砖机、液压制砖机、静压砖机、环保砖机生产厂家—杜甫机械 | 视频直播 -摄影摄像-视频拍摄-直播分发 | 丹佛斯变频器-Danfoss战略代理经销商-上海津信变频器有限公司 | 环讯传媒,永康网络公司,永康网站建设,永康小程序开发制作,永康网站制作,武义网页设计,金华地区网站SEO优化推广 - 永康市环讯电子商务有限公司 | 江苏皓越真空设备有限公司 | 上海公司注册-代理记账-招投标审计-上海昆仑扇财税咨询有限公司 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 京港视通报道-质量走进大江南北-京港视通传媒[北京]有限公司 | 艺术涂料|木纹漆施工|稻草漆厂家|马来漆|石桦奴|水泥漆|选加河南天工涂料 | 广西绿桂涂料--承接隔热涂料、隔音涂料、真石漆、多彩仿石漆等涂料工程双包施工 | 网站建设-临朐爱采购-抖音运营-山东兆通网络科技 | 一体化污水处理设备-一体化净水设备-「山东梦之洁水处理」 | 示波器高压差分探头-国产电流探头厂家-南京桑润斯电子科技有限公司 | 甲级防雷检测仪-乙级防雷检测仪厂家-上海胜绪电气有限公司 | 中国玩具展_玩具展|幼教用品展|幼教展|幼教装备展 | 专注提供国外机电设备及配件-工业控制领域一站式服务商-深圳市华联欧国际贸易有限公司 | 99文库_实习生实用的范文资料文库站 | 建筑资质代办-建筑资质转让找上海国信启航 | 百度网站优化,关键词排名,SEO优化-搜索引擎营销推广 | 2025世界机器人大会_IC China_半导体展_集成电路博览会_智能制造展览网 | 档案密集柜_手动密集柜_智能密集柜_内蒙古档案密集柜-盛隆柜业内蒙古密集柜直销中心 | 数码听觉统合训练系统-儿童感觉-早期言语评估与训练系统-北京鑫泰盛世科技发展有限公司 | 紧急切断阀_气动切断阀_不锈钢阀门_截止阀_球阀_蝶阀_闸阀-上海上兆阀门制造有限公司 | 东莞海恒试验仪器设备有限公司 | 罗茨真空机组,立式无油往复真空泵,2BV水环真空泵-力侨真空科技 | 连续油炸机,全自动油炸机,花生米油炸机-烟台茂源食品机械制造有限公司 | 定制/定做衬衫厂家/公司-衬衫订做/订制价格/费用-北京圣达信 | 金属雕花板_厂家直销_价格低-山东慧诚建筑材料有限公司 | TYPE-C厂家|TYPE-C接口|TYPE-C防水母座|TYPE-C贴片-深圳步步精 | 【灵硕展览集团】展台展会设计_展览会展台搭建_展览展示设计一站式服务公司 | 钢化玻璃膜|手机钢化膜|钢化膜厂家|手机保护膜-【东莞市大象电子科技有限公司】 | 日本细胞免疫疗法_肿瘤免疫治疗_NK细胞疗法 - 免疫密码 |