数组去重一般来说就这么几种方法,理解代码,记住就好!Map、Set、reduce、filter~

方法1 、Map

创建一个Map对象,把数组的值作为Map对象的索引,再获取所有的索引。

const arr = [3, 1, 1, 2, 5, 9, 3, 0]
const deduplication1 = arr => {let map = new Map()arr.forEach(v => map.set(v, 1))return [...map.keys()]
};
console.log(deduplication1(arr));

方法2、Set

const arr = [3, 1, 1, 2, 5, 9, 3, 0]
const deduplication2 = arr => [...new Set(arr)];
console.log(deduplication2(arr))

方法3、 reduce

const arr = [3, 1, 1, 2, 5, 9, 3, 0]
const deduplication3 = arr => arr.reduce((temp, v) => temp.includes(v) ? temp : [...temp, v], [])
console.log(deduplication3(arr))

方法4、filter

const arr = [3, 1, 1, 2, 5, 9, 3, 0]
const deduplication4 = arr => arr.filter((val, index) => arr.indexOf(val) === index)
console.log(deduplication4(arr))

方法5、排序去重

先排序,然后在再进行过滤去掉相邻相同的元素。这种方法不推荐。

const arr = [3, 1, 1, 2, 5, 9, 3, 0]
const deduplication5 = arr => arr.sort().filter((val, index) => val !==arr[index+1])
console.log(deduplication5(arr))

作者 @饥人谷若愚

「前端剑指offer第1期」CSS选择器优先级是怎样计算的?

「前端剑指offer第2期」一侧定宽、一侧自适应,尽量多的方案实现?

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

  1. 8cm等于多少像素_「前端剑指offer第5期」物理像素、逻辑像素、CSS像素、PPI、设备像素比是什么...

    # 提问 物理像素.逻辑像素.CSS像素.PPI.设备像素比是什么? # 回答 物理像素代表屏幕上有多少个点,比如1080x2340表示屏幕一排包含1080个物理像素点. 逻辑像素表示屏幕展示物体的视 ...

  2. background背景图片自适应_一侧定宽、一侧自适应,尽量多的方案实现?「前端剑指offer」...

    # 问题 一侧定宽.一侧自适应,尽量多的方案实现. # 回答 有下面几种方案能实现一侧定宽一侧自适应. 使用flex布局,这也是目前主流方式.父容器设置display:flex,定宽字元素设置flex ...

  3. 剑指Offer(第二版)面试题56:数组中数字出现的次数

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/73609133冷血之心的博客) 剑指Offer(第二版)面试题56: ...

  4. 剑指Offer(Java版):数字在排序数组中出现的次数

    2019独角兽企业重金招聘Python工程师标准>>> 题目:统计一个数字在排序数组中出现的次数.例如输入排序数组为 {1,2,3,3,,3,3,4,5}和数字3,由于3在这个数组中 ...

  5. C++版 - 剑指offer面试题38:数字在已排序数组中出现的次数

    数字在已排序数组中出现的次数 提交网址: http://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2?tpId=13&t ...

  6. [剑指offer]面试题第[1]题[JAVA][二维数组中的查找][数组][二分]

    [问题描述] 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该 ...

  7. [剑指offer]面试题第[53-1]题[JAVA][在排序数组中查找数字-1][二分法][暴力法]

    [问题描述][中等] 统计一个数字在排序数组中出现的次数. 示例 1:输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 示例 2:输入: nums = [5,7, ...

  8. 九度oj 第1题 二维数组中的查找 何海涛:《剑指Offer:名企面试官精讲典型编程题》

    一.题目信息 题目描述: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 输入: ...

  9. python加减法计算题 代码_关于《剑指offer》中不用加减乘除做加法的Python代码的问题...

    题目如下: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题目不难,可以采用位操作来实现,利用异或运算来计算不带进位的加法结果,利用与运算计算进位的标志,然后将这两个 ...

最新文章

  1. 一个基于 Spring Boot 的项目骨架
  2. 22岁天才少女加入华为俄罗斯研究院,曾获「编程界奥赛」冠军
  3. 【坑】记录型信号量/AND信号量/管程解决生产者-消费者问题
  4. lambda表达式初步
  5. pcie协议_PCIE总线,你不得不知道的信号分布及使用情况
  6. 人工计算机的相关信息,第三届计算机信息科学与人工智能国际学术会议(CISAI 2020)...
  7. 理解SharePoint中的备用访问映射(Alternate Access Mapping)
  8. 从R-CNN到Faster R-CNN漫谈
  9. 【Yarn】Yarn : 日志管理
  10. 黑白染色——封锁阳光大学
  11. 使用海康8700综合平台对ds-6908解码器进行解码上墙大概配置
  12. urule规则引擎使用(2022详细)
  13. iOS双重验证设备无法接收验证码,更新手机号。
  14. 学计算机在职硕士,计算机在职研究生的学习方式有哪些?
  15. Java实现10万+并发去重,持续优化!(至尊典藏版)
  16. 计算机图形学(三种画线算法)
  17. DatePicker时间格式化年月日
  18. Linux与Fedora
  19. 前端性能优化之优化图片
  20. 微软rdp服务器,微软远程桌面 UWP 版本重写:使用 RDP 引擎,支持 ARM64

热门文章

  1. VMware Workstation 7.0 203739 汉化补丁
  2. java怎么判断字符串是否为空的几种方法(亲测)
  3. HTTP 协议的三次握手
  4. jupyter-使用及设置密码
  5. tcp为什么要三次握手,而不能二次握手?
  6. PHP索引数组关联数组
  7. linux文件系统添加pcm,嵌入式linux中PCM音频编程实践
  8. 跨域 Cookie 实现单点登录
  9. 计算机复位启动如何操作,电脑能开机但进入不了系统,怎么办?按什么键能恢复系统?...
  10. r语言中c函数错误,R语言中c()函数与paste()函数的区别说明