json对象数组的去重踩坑记

一次无意接受到json数组去重的帮助需求,自信满满的直接上手,不到两分钟留下代码就转身而去,不等屁股挨上座椅就被告知,无法实现去重效果。。。。立马转身再次回头梳理代码,经过各种梳理与尝试,最终完成了预期效果的实现,也意外的发现中间的一些容易忽略的坑与迷失点,现整理出来给自己梳理知识点的同时也给码友们提供参考。
json数组去重的方法其实很多,最原生的js写法就是for循环遍历,然后剔除重复的对象之后新建一个数组,最后这个新建的数组就是自己需要的,如下实例代码:

function unique(arr)
{
    var result = []; //结果数组
    for(var i = 0; i < arr.length; i++) 
    {
        //如果在结果数组result中没有找到arr[i],则把arr[i]压入结果数组result中
        if (result.indexOf(arr[i]) == -1) result.push(arr[i]);
    }
    return result;
}

但自从es6语法问世了之后,总会在不经意中或者刻意中去精简自己的代码或者提升代码体验感用es6的语法来处理问题,最开始就直接拿了数组和set的拓展方法来处理去重,语法如下:

// 去除数组的重复成员
[...new Set(array)]

const set = new Set([1, 2, 3, 4, 4]);
[...set]
// [1, 2, 3, 4]

再通过Array.from()转换成数组就以为ok了,结果想当然的就掉坑了。
在es6的官方文档中,所有的示例基本都是用的最简单的数组(可称之为一维数组)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值