博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【原】js数组对象去重最简单的方法
阅读量:5119 次
发布时间:2019-06-13

本文共 1201 字,大约阅读时间需要 4 分钟。

简单的数组去重是比较简单的,方法也特别多,如给下面的数组去重:

let arr = [1,2,2,4,9,6,7,5,2,3,5,6,5]

最常用的可以用for循环套for循环,再用splice删除重复的数组:

let arrUnique = function (arr){                    for(let i=0; i

然而数组的子集为对象时,一般不使用多个for循环来去重,如下面的数组对象:

let arr = [    {        mch_id:'ghx1',        status: 1,        type: 2    },    {        mch_id:'awx2',        status: 2,        type: 3    },    {        mch_id:'ghx1',        status: 1,        type: 2    },    {        status: 1,        type: 2,        mch_id:'ghx1'    }]

通过观察,我们可以发现该数组中的第1、3、4项其实是一样的,最初在谷歌找了几个方法最终都不太满意,比如会改变数组中对象原来的排序、数组去重失败等,后来经过多次尝试和实践,得出以下最简单的方法:

  1. 利用对象的键名无法重复的特点,我们可以新建一个临时对象来存储原数组中的对象子集的值,比如我的项目中mch_id是唯一的ID,然后设置的它为临时对象的键名,值为true即可,保证它的唯一性
  2. 通过判断对象的键名是唯一时,把对应的数组值添加到一个空数组中,最终得到一个去重后的数组对象
  3. 此方法不会改变数组对象原有的排序
let arrUnique = function(arr){    let result = {};    let finalResult=[];    for(let i=0;i

或者利用ES5数组方法reduce

let arrUnique = function(arr){    let ojb = {};    arr = arr.reduce(function(prevArr, currentItem) {        //利用对象的键名无法重复的特点,mch_id是唯一区别的属性值        ojb[currentItem.mch_id] ? '' : ojb[currentItem.mch_id] = true && prevArr.push(currentItem);        return prevArr    }, [])    return arr;}

 提前祝大家劳动节快乐

转载于:https://www.cnblogs.com/PeunZhang/p/10773351.html

你可能感兴趣的文章
08Struts2标签
查看>>
判断栈的弹出序列
查看>>
给QTextEdit添加背景图片及注意事项(转)
查看>>
多校4-Walk Out 分类: 比赛 201...
查看>>
iOS中的代理和Block
查看>>
Linux下Oracle常用命令
查看>>
11.12
查看>>
2017-2018-2 20179204《网络攻防实践》第七周学习总结
查看>>
html 块状元素、内联元素、内联块状元素
查看>>
机器学习系列:概览
查看>>
nginx完美支持TP5的pathinfo路由模式
查看>>
探索逻辑事务 TransactionScope
查看>>
qt中绘图事件paintEvent 的用法
查看>>
Visio中的Undo和Redo
查看>>
ORACLE会话连接进程三者总结
查看>>
python学习笔记第九节(迭代器,生成器,三元表达式)
查看>>
数据结构之队列(二)——链队列
查看>>
git命令
查看>>
第二周第三天课程
查看>>
Mac 下安装Ruby环境
查看>>