vue docker容器 bash 逻辑端口 nginx视频教程 android项目开发 less官网 datetimepicker赋值 java数据分析 mysql统计数量 idea整理代码格式 leach算法 安卓程序源代码 matlab输入参数太多 python环境配置 python的random模块 python路径设置 java学习课程 java遍历 莫愁脚本 0x0000004e 零基础学python 微信python退出程序 动态加载js ezcad2 字幕提取 电子书制作软件 js小数点保留2位 ios删除描述文件 小米9截屏 男网红头像 xmind画流程图 js取余数 头条视频解析 oemdiy 淘宝抽奖活动 edquota onaccuracychanged studioone js回调函数
当前位置: 首页 > 学习教程  > 编程语言

JS reduce 对象数组去重

2020/11/4 13:52:26 文章标签:

贴上大佬的代码: removeDuplication: function (arr) {let obj {}; //初始值为空的对象,用来存放已存在的对象的属性let newArr arr.reduce(function (prev, cur) {obj[cur._id] ? : obj[cur._id] true && prev.push(cur); //_id为每个对象独有的标识&…

贴上大佬的代码:

  removeDuplication: function (arr) {
    let obj = {}; //初始值为空的对象,用来存放已存在的对象的属性
    let newArr = arr.reduce(function (prev, cur) {
      obj[cur._id] ? '' : obj[cur._id] = true && prev.push(cur); //_id为每个对象独有的标识,即用来判断去重的标识
      return prev;
    }, []);
    return newArr;
  }

reduce方法的参数中,prev表示最终返回的数组,cur表示当前遍历到的数组中的对象

设需要去重的对象数组为[{_id: ‘01’, name: ‘1’}, {_id: ‘02’, name: ‘2’}, {_id: ‘01’, name: ‘3’}]

第一次遍历:
obj[‘01’] === false, 则obj中加入属性01,值为true,同时将该对象加入prev。
此时,obj:{01:true}, prev:[{_id: ‘01’, name: ‘1’}];

第二次遍历:
obj[‘02’] === false, 则obj中加入属性02,值为true,同时将该对象加入prev。
此时,obj:{01:true,02:true}, prev:[{_id: ‘01’, name: ‘1’}, {_id: ‘02’, name: ‘2’}];

第三次遍历:
obj[‘01’] === true, 则不做操作。
此时,obj:{01:true,02:true}, prev:[{_id: ‘01’, name: ‘1’}, {_id: ‘02’, name: ‘2’}];


本文链接: http://www.dtmao.cc/news_show_350024.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?