非常简单的二维数组去重

前几天有朋友问我数组去重怎么做,我说简单的数组去重很简单啊,他说是对象形式的,我想了想,也有了点思路。

  但是我还是上网查了一下,各路大神四面八方杀来,我觉得很麻烦,而且有的方法还不适用我的数组需求,下面进入正题:

需求是:去除数组中name与age都相同的项;

<script type="text/javascript">

$(document).ready(function(){
var oldArr = [
        {name:1,age:1},
        {name:2,age:2},
        {name:2,age:2},
        {name:3,age:3},
        {name:3,age:4},
        {name:4,age:5},
        {name:4,age:4},
        {name:4,age:0},
        {name:5,age:6},
        {name:5,age:6},
        {name:1,age:0},
        {name:1,age:0},
        {name:2,age:0},
        {name:3,age:0},
        {name:1,age:0},
    ];
    for (var i = 0; i < oldArr.length - 1; i++) {
    for (var j = 1; j < oldArr.length; j++) {
        if (i != j) {
            if (oldArr[i].name == oldArr[j].name && oldArr[i].age == oldArr[j].age) {
                oldArr.splice(j, 1)
            }
        }

    }
}
     console.log(oldArr)
    
})

</script>

这样一个二维数组去重就解决了。

 

是不是非常简单易懂。

当然了,对于大神来说,这不是太low了么,而且他的效率也很慢,下面再呈现一种简单的方法 GO=>

数组还是那个数组 ;

const obj = {};

for(const item of oldArr){

        obj[item.name+','+item.age] = item 

}

oldArr = Object.values(obj)

console.log(oldArr) //现在就得到大家想要的结果了。

 

如果说需求改成只需要去除对象中某一项相同的项,怎么做呢,那就简单了,咱们就举例去除name相同的项;

const obj = {};

oldArr = oldArr.reduce((cur,next)=>{

       obj[next.name] ? '' : obj[next.name] = true && cur.push(next)

       return cur;

},[])

cosnole.log(oldArr)  //搞定

最后再给大家奉上一种基本类型数组去重的方法

var  arr = [1,1,2,2,3,3,4,4,5,5];

function dist(arr){

     return arr.reduce((acc,cur) => {

            acc.includes(cur)   || acc.push(cur)

              return acc;

      },[])  //别忘了最后这个参数啊!这叫做归并基础的初始值

}

去重的方法还有很多种   ES6的set去重更简单,多了解一些总没有坏处,大家继续加油!!!

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值