一.去重前后数据对比
// 原数据是这样的 // 去重后数据是这样的[{ [{"goodsId": "1", "goodsId": "1","quota": 12, "quota": 12,"skuId": "1" "skuId": "1"}, },{ {"goodsId": "2", "goodsId": "2","quota": 12, "quota": 12,"skuId": "2" "skuId": "2"}, }]{"goodsId": "1","quota": 12,"skuId": "1"}]
二.使用方法
- 使用filter和Map 🌟🌟🌟🌟🌟
- 使用reduce 🌟🌟🌟🌟
- for循环 🌟🌟🌟
结论:filter和Reduce时间上差别不是太大,filter稍微更快一些,但是filter语法更简洁
1.使用filter和Map
代码简洁,好用,4行代码搞定,平均耗费时间最短,五星推荐
function uniqueFunc(arr, uniId){// 创建一个mapconst res = new Map();// 如果 res 有对应的 key 就返回return arr.filter((item) => !res.has(item[uniId]) && res.set(item[uniId], 1));}
2.使用reduce
代码稍多,平均耗费时间和第一不分伯仲,四星推荐
function uniqueFunc2(arr, uniId){let hash = {}return arr.reduce((accum,item) => {//hash[item[uniId]] ? '' : hash[item[uniId]] = true && accum.push(item)return accum},[])}
3.使用for循环
耗费时间较一二稍多,但是耗费时间平均,三星推荐
function uniqueFunc3(arr, uniId){let obj = {}let tempArr = []for(var i = 0; i<arr.length; i++){if(!obj[arr[i][uniId]]){tempArr.push(arr[i])obj[arr[i][uniId]] = true}}return tempArr}
作者:光年之外_宇
链接:https://juejin.cn/post/6984625612937773070
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
