I.输入

JS对象数组去重是业务经常遇到的方法,稍微简洁一点的方法,如下:

    var data = [{"id": 1, "name": "李四1"},{"id": 1, "name": "李四2"},{"id": 1, "name": "李四3"},{"id": 1, "name": "李四1"},{"id": 5, "name": "李四5"},];

P.去重方法(JS版本)

    function ArrSet(Arr, id) {var obj = {};const arrays = Arr.reduce((setArr, item) => {obj[item[id]] ? '' : obj[item[id]] = true && setArr.push(item);return setArr;}, []);return arrays;}console.log(ArrSet(data, 'id'));console.log(ArrSet(data, 'name'));

P.去重方法(TS版本)

 function ArrSet<T extends any[]>(Arr: T, id: string): T {let obj: Object = {}const arrays = Arr.reduce((setArr, item) => {obj[item[id]] ? '' : (obj[item[id]] = true && setArr.push(item))return setArr}, [])return arrays}

O.打印台结果

总结:思路分析

reduce()是数组的并归方法,其接受四个参数。
reduce(上一个并归值,当前项,当前项的索引,数组本身)
例:使用reduce()函数执行累加数组中所有数组的操作

    let values = [1,2,3,4,5,6];let sum = values.reduce((prev, cur, index, array) => prev + cur);console.log(sum) // 打印出21

显然函数每次迭代返回prev + cur,然后prev + cur 成为下一次的prev值来进行迭代,最终返回的就是
(1+ 2) + 3) + 4) + 5) + 6的过程。最后返回归并结果。
*注:方法reduce()还有一个类似方法reduceRight(),只是方向相反,并没有别的不同。

参考文献

[1] JavaScript高级程序设计(第四版)

JS对象数组去重简单有效方法相关推荐

  1. 【ES6】最简单的对象数组去重的方法

    对象数组去重的方法 // arr传数组名,attr传属性名 const uniqueArr=(arr,attr)=> {const res = new Map();return arr.filt ...

  2. 两个对象数组去重的3种方法

    两个对象数组去重的3种方法 前言 问题描述 解决方案一 解决方案二 解决方案三 前言 前段时间写过JavaScript数组去重最简单的 4 种方案,里面的数组元素是基本类型.本文要讲的数组元素是对象, ...

  3. 前端:JS实现数组去重常用的六种方法介绍

    今天给大家分享JS实现数组去重常用的六种方法,希望对大家能有所帮助! 定义变量 let arr = [20,6,13,20,100,8,13,11]; let newArr = []; 1.两层循环去 ...

  4. 分享6个对象数组去重的方法

    大家好,关于对象数组去重的业务场景,想必大家都遇到过类似的需求吧,针对这样的需求,你是怎么做的呢. 下面我就先和大家讨论下基于对象的某个属性如何去重. 方法一:使用 .filter() 和 .find ...

  5. js对象数组计算总计_如何计算数组中的对象

    js对象数组计算总计 Knowing how to quickly iterate through an array and count objects is deceptively simple. ...

  6. vue 对象数组去重

    vue 对象数组去重 1.利用set去重 其实很简单,一般的数组去重可以直接用 new Set() 方法即可,但是数组对象的话,比较复杂,不能直接用,我们可以采取间接的方法来去重 对象去重 uniqu ...

  7. Js面试题(一)--js实现数组去重怎么实现?

    方法1.创建一个新的临时数组来保存数组中已有的元素 方法2.使用哈希表存储已有元素 方法3.使用indexof判断数组元素第一次出现的位置是否为当前位置 方法4.先排序再去重 第一种方法和第三种方法都 ...

  8. Javascript中数组去重的六种方法

    数组去重 第一种方法: 先对数组进行排序sort(),排好序,然后把数组的当前项和后一项进行比较,相同则使用数组的splice(相同的位置,1),但是为了防止数组塌陷,每次删除数组元素的时候要把i的值 ...

  9. js对象数组根据某一属性查找对象

    js对象数组[{name: "zhangsan", age: 20}, {name: "lisi", age: 30}], 如果想查找name是zhangsan ...

最新文章

  1. 智能应答系统php源码,佳蓝智能应答系统 php版下载|佳蓝智能应答系统 php版官方下载-太平洋下载中心...
  2. python的源代码文件的扩展名是-python源文件后缀是什么
  3. linux 单引号,双引号,反引号
  4. ffplay.c学习-6-⾳视频同步基础
  5. C++编程思想:继承与虚函数以及多态
  6. access设置0字段为null是因为类型转换失败_Apache Pulsar 2.6.1 版本正式发布:2.6.0 加强版,新增 OAuth2 支持
  7. 团队作业2——需求分析原型设计
  8. 读《广州的一场春梦》有感
  9. 图书查找java_java图书信息查询实例
  10. 删除google网页快照方法
  11. 针对Windows10下EPLAN2.7频繁重启的解决办法
  12. iterator的用法及概念
  13. 网站添加“富强·民主·爱国”鼠标点击特效美化
  14. 图解IFRS 9 金融工具(13)实施时间及结语
  15. access tempvars 宏_Access数据库教程之使用常用对象来加快Access 2007数据库三
  16. 云服务器 架设传奇_阿里云虚拟主机,ECS服务器,轻量应用服务器有什么区别,该如何选择?...
  17. ModelCheckpoint详解
  18. 深度学习花书学习感悟之第三章概率论
  19. oracle数据库内存结构pga/sga/uga做比较分析
  20. OpenCV学习笔记(十一)——图像噪声的生成(椒盐噪声、高斯噪声)

热门文章

  1. CSS媒体查询“@media”在调试中切换移动设备时不起作用。
  2. 背景图片根据宽度自适应高度的方案
  3. mysql卸载报错1606_MySQL
  4. Kubernetes 污点 Taint 和容忍 Toleration
  5. 判断字符串是否为数字
  6. F28335第八篇——CCS6.0主题设置
  7. 定点数(fixed-point number)
  8. 入手了乐字节九个项目课,这是市面上最值得推荐的 Java 练手项目!!!真的很棒!!!
  9. html图片遮住字了,css 内容为何被遮挡住了?
  10. CSS学习笔记4:文本样式