JS对象数组去重简单有效方法
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对象数组去重简单有效方法相关推荐
- 【ES6】最简单的对象数组去重的方法
对象数组去重的方法 // arr传数组名,attr传属性名 const uniqueArr=(arr,attr)=> {const res = new Map();return arr.filt ...
- 两个对象数组去重的3种方法
两个对象数组去重的3种方法 前言 问题描述 解决方案一 解决方案二 解决方案三 前言 前段时间写过JavaScript数组去重最简单的 4 种方案,里面的数组元素是基本类型.本文要讲的数组元素是对象, ...
- 前端:JS实现数组去重常用的六种方法介绍
今天给大家分享JS实现数组去重常用的六种方法,希望对大家能有所帮助! 定义变量 let arr = [20,6,13,20,100,8,13,11]; let newArr = []; 1.两层循环去 ...
- 分享6个对象数组去重的方法
大家好,关于对象数组去重的业务场景,想必大家都遇到过类似的需求吧,针对这样的需求,你是怎么做的呢. 下面我就先和大家讨论下基于对象的某个属性如何去重. 方法一:使用 .filter() 和 .find ...
- js对象数组计算总计_如何计算数组中的对象
js对象数组计算总计 Knowing how to quickly iterate through an array and count objects is deceptively simple. ...
- vue 对象数组去重
vue 对象数组去重 1.利用set去重 其实很简单,一般的数组去重可以直接用 new Set() 方法即可,但是数组对象的话,比较复杂,不能直接用,我们可以采取间接的方法来去重 对象去重 uniqu ...
- Js面试题(一)--js实现数组去重怎么实现?
方法1.创建一个新的临时数组来保存数组中已有的元素 方法2.使用哈希表存储已有元素 方法3.使用indexof判断数组元素第一次出现的位置是否为当前位置 方法4.先排序再去重 第一种方法和第三种方法都 ...
- Javascript中数组去重的六种方法
数组去重 第一种方法: 先对数组进行排序sort(),排好序,然后把数组的当前项和后一项进行比较,相同则使用数组的splice(相同的位置,1),但是为了防止数组塌陷,每次删除数组元素的时候要把i的值 ...
- js对象数组根据某一属性查找对象
js对象数组[{name: "zhangsan", age: 20}, {name: "lisi", age: 30}], 如果想查找name是zhangsan ...
最新文章
- 智能应答系统php源码,佳蓝智能应答系统 php版下载|佳蓝智能应答系统 php版官方下载-太平洋下载中心...
- python的源代码文件的扩展名是-python源文件后缀是什么
- linux 单引号,双引号,反引号
- ffplay.c学习-6-⾳视频同步基础
- C++编程思想:继承与虚函数以及多态
- access设置0字段为null是因为类型转换失败_Apache Pulsar 2.6.1 版本正式发布:2.6.0 加强版,新增 OAuth2 支持
- 团队作业2——需求分析原型设计
- 读《广州的一场春梦》有感
- 图书查找java_java图书信息查询实例
- 删除google网页快照方法
- 针对Windows10下EPLAN2.7频繁重启的解决办法
- iterator的用法及概念
- 网站添加“富强·民主·爱国”鼠标点击特效美化
- 图解IFRS 9 金融工具(13)实施时间及结语
- access tempvars 宏_Access数据库教程之使用常用对象来加快Access 2007数据库三
- 云服务器 架设传奇_阿里云虚拟主机,ECS服务器,轻量应用服务器有什么区别,该如何选择?...
- ModelCheckpoint详解
- 深度学习花书学习感悟之第三章概率论
- oracle数据库内存结构pga/sga/uga做比较分析
- OpenCV学习笔记(十一)——图像噪声的生成(椒盐噪声、高斯噪声)
热门文章
- CSS媒体查询“@media”在调试中切换移动设备时不起作用。
- 背景图片根据宽度自适应高度的方案
- mysql卸载报错1606_MySQL
- Kubernetes 污点 Taint 和容忍 Toleration
- 判断字符串是否为数字
- F28335第八篇——CCS6.0主题设置
- 定点数(fixed-point number)
- 入手了乐字节九个项目课,这是市面上最值得推荐的 Java 练手项目!!!真的很棒!!!
- html图片遮住字了,css 内容为何被遮挡住了?
- CSS学习笔记4:文本样式