关于reduce()我们这里不做太多说明,主要明白这是一个类递归的方法。其中接受两个参数,一个是回调函数,一个是可选的默认值。

arr.reduce((pre, cur, index, arr) => {}, 0)
// 这里的pre是上一个递归后的返回值,而cur是当前值,这两个参数是必传的,index是当前索引,arr是原始
//数组,是可选的;0是pre的默认值,是一个可选参数,我们在进行一些数学运算可以给他赋一个初始值

这里我们主要运用reduce()的递归特性来完成数组的去重

let arr = [1, 2, 3, 4, 5, 4, 2, 3,6,7,2]
let obj = {}
let arr1 = arr.reduce((pre, cur) => {if(obj[cur]) {return pre}else {obj[cur] = truepre.push(cur)return pre}
}, [])
console.log(arr1)

这里我们通过定义一个obj来接收当前的值用于判断是否已经存在,若不存在则给数组进行添加。

我们可以看到这里的结果已经是没有重复的。

关于数组的去重还有很多方法,这里我只是举了一种,我们也可以通过Set数据类型等方法来进行去重。

reduce()实现数组去重相关推荐

  1. es6新增数组、数组去重、es6新特性

    ES6新增的数组方法 1.forEach forEach()会遍历数组, 循环体内没有返回值,forEach()循环不会改变原来数组的内容, forEach()有三个参数, 第一个参数是当前元素, 第 ...

  2. js中ES6新增的数组方法reduce(),和数组去重,降维。

    js中ES6新增的数组方法reduce() js数组reduce()详解 基本概念: reduce()方法接收一个函数作为累加器,数组中的每一值(从左到右)开始缩减,最后成为一个值 reduce()为 ...

  3. 数组去重--这几种方法够不?

    数组去重,是校招面试的必考知识点.简单的说,数组去重就是将一个数组中的相同的元素删除,只保留其中的一个.这里的相同其实是一个陷阱,有好多同学只认为值相等即为相同,而忽略类类型的判断.所以大家在进行数组 ...

  4. java数组去重_数组去重12种方案-你要的全在这

    首先我们先温习一下数组的常用的方法 pop push shift unshift slice splice sort reverse concat join indexOf lastIndexOf m ...

  5. 数组去重与数组扁平化

    一.数组去重(1)indexOf() function only(arr){var res=[];arr.forEach(function(item){if(res.indexOf(item)==-1 ...

  6. 数组去重(包括es6)

    1.最基本的去重方法 思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中. function unique(arr){var repeat=fa ...

  7. vue中向数组去重_「前端剑指offer第3期」来,手写一下数组去重

    数组去重一般来说就这么几种方法,理解代码,记住就好!Map.Set.reduce.filter~ 方法1 .Map 创建一个Map对象,把数组的值作为Map对象的索引,再获取所有的索引. const ...

  8. JS数组去重方法记录

    js数组去重方法 1.遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 代码如下(示 例): function getArray(ar) {va ...

  9. JS----JavaScript数组去重(12种方法,史上最全)

    数组去重的方法 一.利用ES6 Set去重(ES6中最常用) Set 不包含重复元素的值的集合 Map 双列集合 键值对 与object的区别 : object中的key只能是string类型 而Ma ...

最新文章

  1. 程序员的认知-中国程序员为什么跳槽
  2. 种子谋定翻身-农民丰收节交易会·万建民:破解卡脖子难题
  3. Laravel核心解读--控制器
  4. ie6 png不透明的解决方法
  5. jQuery 对象与Dom 对象互转
  6. 初步了解关于js跨域问题
  7. Proxmark3初学:用PM3克隆M1普通门禁卡方法
  8. 利用混合高斯模型实现视频中运动目标与背景的分离
  9. 分集增益的不同合并方式的性能分析
  10. 小技巧之chrome浏览器安装淘宝比价插件
  11. 重新定义“车规级”激光雷达
  12. 阿里云API请求签名失败的解决办法
  13. Windows10 LSTC 2021输入法无法使用的问题
  14. java阿里面试官直接告诉你录取答案,你还在犹豫那就晚了
  15. win10user文件夹迁移_win10专业版用户文件夹迁移到另一个驱动器的方法
  16. RFID固定资产管理降低人工成本,实现智能化的管理-新导智能
  17. sklearn-机器学习笔记
  18. 12.zabbix 自定义模板
  19. 三人同行七十稀 - 中国剩余定理浅析
  20. linux 两个文件比较是否完全相同

热门文章

  1. TLS Client-initiated 重协商攻击(CVE-2011-1473)漏洞验证测试
  2. 华为Mate40/华为Mate40Pro忘记密码怎么解锁激活手机设备已锁定恢复出厂无法解锁账户ID屏幕锁解除刷机方法教程
  3. dell服务器 指示灯_Dell PowerEdge服务器或PowerVault存储诊断LED指示灯(QuadPack)故障排除...
  4. 服务器维护首先查看指示灯,HP ILO2 使用详细教程[图文]
  5. LoadRunner函数大全
  6. itunes显示app store无法连接服务器,无法连接到iTunes Store的解决方案
  7. H5视频会议,直播,通话,教学,支持Webrtc、rtmp、sip、rtsp转协议、IPCAM、白板、桌面共享、免插件、web全平台、视频融合系统研发笔记。...
  8. 牛客网刷题java之(斐波那契数列)一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
  9. Service(服务)之 Local Service(本地服务)
  10. 如何下载在线课程网站的视频