本文主要介绍了JS对象数组去重的三种方法,包括使用filter和Map,使用reduce和for循环。本文中的每种方法都给出了示例代码,有需要的朋友可以参考。
目录
一、去重前后数据对比二。用法1。使用过滤器和地图2。使用reduce3。用于循环3。2400条数据,并对比总结三种方法的处理时间。
一.去重前后数据对比
//原始数据是这样的//重复数据删除后的数据是这样的
[{ [{
goodsId': '1 ',' goodsId': '1 ',
'配额':12,'配额':12,
skuId': '1' 'skuId': '1 '
}, },
{ {
goodsId': '2 ',' goodsId': '2 ',
'配额':12,'配额':12,
“skuId”:“2”“skuId”:“2”
}, }]
{
goodsId': '1 ',
'配额':12,
skuId': '1 '
}]
二.使用方法
使用过滤器和地图
使用reduce
For循环
结论:过滤和还原在时间上没有太大区别。filter略快,但filter的语法更简洁。
1.使用filter和Map
代码简洁,好用,4行代码搞定,平均时间最短。五星推荐。
函数uniqueFunc(arr,uniId){
const RES=new Map();
return arr.filter((item)=!RES . has(item[uniId])RES . set(item[uniId],1));
}
2.使用reduce
代码多一点,平均耗时等于第一,四星推荐。
函数uniqueFunc2(arr,uniId){
设哈希={}
return arr.reduce((accum,item)={
hash[item[uniId]]?':hash[item[uniId]]=true accum . push(item)
返回累计
},[])
}
3.使用for循环
比一两个多花一点时间,但是花的时间一般。三星推荐。
函数uniqueFunc3(arr,uniId){
让obj={}
设tempArr=[]
for(var I=0;iarr .长度;i ){
如果(!obj[arr[i][uniId]]){
tempArr.push(arr[i])
obj[arr[i][uniId]]=true
}
}
返回tempArr
}
三.2400条数据,三种方法处理时间对比
测试时间
过滤地图
减少
For循环
一个
0.139892578125毫秒
0.19189453125毫秒
0.2060546875毫秒
2
0.12109375毫秒
0.1279296875毫秒
0.195068359375毫秒
三
0.112060546875毫秒
0.11767578125毫秒
0.174072265625毫秒
四
0.10400390625毫秒
0.1728515625毫秒
0.18701171875毫秒
五
0.10986328125毫秒
0.12890625毫秒
0.175048828125毫秒
六
0.113037109375毫秒
0.10791015625毫秒
0.172119140625毫秒
七
0.134033203125毫秒
0.129150390625毫秒
0.172119140625毫秒
测试时间截图显示
总结
这就是本文关于JS对象数组重复数据删除的三种方法及其比较。有关JS对象数组重复数据删除的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。