JS 数组中对象去重 reduce 用法

摘要:
[3,2,6].减少。//请注意,传递了两个参数。第一个参数是回调,第二个参数是初始值aa。简单阵列重复数据消除:letarr=newSet[…arr]//打印1,3,“bb”,“cc”。对于数组对象,传统的重复数据消除方法无能为力,forEach()和filter()等迭代方法不易使用;真正能够实现优雅和减重的是ES5中添加的一种新方法——完美的方法letlog=控制台。log,由reduce()bind专家给出;Letperson=〔{id:0,名称:“小明”},{id:1,名称:”小张“},}id:2,名称::”小丽“}、{id:3,名称“小孙”}、}id:1、名称:”小周“};letobj={};人=人。reduce((cur,next)=˃{obj[next.id]?obj[next-id]){cur.push}}//不会报告任何错误,而且很容易理解returncur;},[]).
[3,2,6].reduce.((aa, bb) => {return aa+bb}, []) // 注意传了2个参数,第一个为回调,第二个为初始值 aa

单纯数组去重:
let arr = new Set([1,1,3,3,'bb','bb','cc'])
[...arr] // 打印出 1, 3, "bb", "cc"

对于数组对象,传统的去重方法无能为力,至于forEach()、filter()等迭代方法也不好使;真正能做到优雅去重的,是ES5新增加的一个方法——reduce()

高手给的,完美方法

let log = console.log.bind(console);
let person = [
     {id: 0, name: "小明"},
     {id: 1, name: "小张"},
     {id: 2, name: "小李"},
     {id: 3, name: "小孙"},
     {id: 1, name: "小周"},
     {id: 2, name: "小陈"},   
];

let obj = {};

person = person.reduce((cur,next) => {
    obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
    return cur;
},[]) //设置cur默认类型为数组,并且初始值为空的数组
log(person);

高手总结:https://www.cnblogs.com/caideyipi/p/7679681.html

使用时发现开 eslint 时,上面的表达式会报错,换成以下条件即可:

let obj = {};
person = person.reduce((cur,next) => {
    if (!obj[next.id]) {
      obj[next.id] = true
       if (!obj[next.id]) {
        cur.push(next)
       }
    } // 不会报错,也比较好懂了 (当对象里没有所传属性时,给属性true并PUSH数组)
    return cur;
},[])        

.

免责声明:文章转载自《JS 数组中对象去重 reduce 用法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇在点击run之后,没有显示任何设备,这一般是adb的问题,解决方法是重新启动adbWindows IIS注册asp 此操作系统版本不支持此选项 错误解决方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MongoDB(11)- 查询数组

插入测试数据 db.inventory.insertMany([ { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ] }, { item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14,...

MATLAB元胞数组

MATLAB元胞数组 元胞数组: 元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞(cell)。和一般的数值矩阵一样,元胞数组的内存空间也是动...

scala的多种集合的使用(5)之数组Array(ArrayBuffer)的操作

1.创建和更新数组的不同方式 1)定义一个数组的初始大小和类型,随后填充值。 scala> val array = new Array[String](3) array: Array[String] = Array(null, null, null) scala> array(0) = "abc" scala> array(1) =...

JS的"多线程"

这个系列的文章名为“JavaScript 进阶”,内容涉及JS中容易忽略但是很有用的,偏JS底层的,以及复杂项目中的JS的实践。主要来源于我几年的开发过程中遇到的问题。小弟第一次写博客,写的不好的地方请诸位斧正,觉得还有一些阅读价值的请帮忙分享下。这个“JavaScript 进阶”是一个系列文章,请大家鼓励鼓励,我尽快更新。另外,如果你有比较好的话题,也可...

js的动态加载、缓存、更新以及复用

使用范围:   OA、MIS、ERP等信息管理类的项目,暂时不考虑网站。 遇到的问题:   完成一个项目,往往需要引用很多js文件,比如jQuery.js、easyUI等。还有自己写的一些列js文件,那么这些文件如何方便的加载,如果文件有变化如何才能让客户端及时更新缓存?如果能够提高点运行效率,那就更好了。 目标: 1、  可以方便的引用js文件。 2、 ...

jmeter_上一请求的响应值作为下一请求的参数

Json响应格式 json串中{}表示对象,[]表示数组 JSON Extractor使用jsonpath表达式匹配,可以一次取多个变量值。 $表示响应的根对象。 取子对象或对象的属性用. 取数组里的对象用[],数组索引从0开始。 获取数组的所有值$[*].属性 1)新建一个请求,返回json响应格式的,分析响应结果 1)在上一请求上点...