硬核干货来啦:Js数组去重,赶快收藏吧
本文为工具方法,提供简单但常用的js方法函数。
本文内容来自不同的网友分享。
for…of + Object
首先创建一个空对象,然后用 for 循环遍历
利用对象的属性不会重复这一特性,校验数组元素是否重复
function distinct(a, b) {let arr = a.concat(b)let result = []let obj = {}for (let i of arr) {if (!obj[i]) {result.push(i)obj[i] = 1}}return result
}
new Set()
ES6 新增了 Set 这一数据结构,类似于数组,但 Set 的成员具有唯一性
基于这一特性,就非常适合用来做数组去重了
function distinct(a, b) {return Array.from(new Set([...a, ...b]))
}
Array.sort()
首先使用 sort() 将数组进行排序
然后比较相邻元素是否相等,从而排除重复项
function distinct(a, b) {let arr = a.concat(b)arr = arr.sort()let result = [arr[0]]for (let i=1, len=arr.length; i<len; i++) {arr[i] !== arr[i-1] && result.push(arr[i])}return result
}
for…of + includes()
双重for循环的升级版,外层用 for…of 语句替换 for 循环,把内层循环改为 includes()
先创建一个空数组,当 includes() 返回 false 的时候,就将该元素 push 到空数组中
类似的,还可以用 indexOf() 来替代 includes()
function distinct(a, b) {let arr = a.concat(b)let result = []for (let i of arr) {!result.includes(i) && result.push(i)}return result
}
双重 for 循环
最容易理解的方法,外层循环遍历元素,内层循环检查是否重复
当有重复值的时候,可以使用 push(),也可以使用 splice()
function distinct(a, b) {let arr = a.concat(b);for (let i=0, len=arr.length; i<len; i++) {for (let j=i+1; j<len; j++) {if (arr[i] == arr[j]) {arr.splice(j, 1);// splice 会改变数组长度,所以要将数组长度 len 和下标 j 减一len--;j--;}}}return arr
}
Array.filter() + indexOf
function distinct(a, b) {let arr = a.concat(b);return arr.filter((item, index)=> {return arr.indexOf(item) === index})
}
硬核干货来啦:Js数组去重,赶快收藏吧相关推荐
- 硬核干货来了!手把手教你实现热力图!
以下内容转载自腾讯位置服务公众号的文章<硬核干货来了!鹅厂前端工程师手把手教你实现热力图!> 作者:腾讯位置服务 链接:https://mp.weixin.qq.com/s/bgS7uFl ...
- js数组去重(多种方法)
1 // js数组去重 2 Array.prototype.fun1 = function(){ 3 var arr = this, 4 result = [], 5 i, 6 len = arr.l ...
- JS数组去重的6种算法实现
1.遍历数组法 最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法"indexOf"是ECMAScript5 方法 ...
- js数组去重解决方案
js数组去重解决方案 参考文章: (1)js数组去重解决方案 (2)https://www.cnblogs.com/yxqd/p/10381932.html 备忘一下.
- JS数组去重方法记录
js数组去重方法 1.遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 代码如下(示 例): function getArray(ar) {va ...
- JS数组去重方法小结
JS数组去重 看了网上很多数组去重方法,用的比较常见的大概就几种,今天想自己来做一个总结. 部分内容参考该博客 1 . 在原数组上操作(基本方法) 思路:利用循环嵌套,判断数组中每个元素与其后面的元素 ...
- JS数组去重算法实现
1.遍历数组法 最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法"indexOf"是ECMAScript5 方 ...
- e站app里站hosts_硬核干货区 | E站的国际站运营知识星球上线啦
朋友们大家好,E站已上线了知识星球内容库和问答圈,以阿里国际站,Wordpress自建站,Google SEO的更新内容为主,用原理技术的视角+全栈运营的思维去加成对店铺的运营和优化,知道为什么要这样 ...
- 硬核干货:网易云音乐如何做产品创新
网易云音乐是大家非常熟悉和喜欢的一款产品,作为一个音乐类应用,成功融合进了社交等元素,满足了多样化的用户需求.那么今天产品系就带大家揭秘网易云音乐是怎样做产品的,而揭秘者正是网易云音乐的产品总监沈博文 ...
- 【硬核干货】4500字、10个案例分享几个Python可视化小技巧,助你绘制高质量图表...
大家好,这里是俊欣,又是新的一周,好吧,打工人真的是太苦了 一般在Python当中,我们用于绘制图表的模块最基础的可能就是matplotlib了,今天小编分享几个用该模块进行可视化制作的技巧,帮助你绘 ...
最新文章
- LeetCode简单题之比赛中的配对次数
- ARM GCC Inline Assembler Cookbook
- Gem5在全系统(FS)模式下运行自己的测试程序
- Java(19)JDBC
- Java多线程基础学习一:线程的6种状态和相互转化
- UltraEdit搭建python IDE环境+设置快捷键
- php中ignore_user_abort函数的用法(定时)
- IEC_60068-2-64基本环境试验规程第2-64部分试验试验Fh振动、宽带随机抽样
- ArcMap提取不规则线的坐标
- 华为手机怎样才算激活了_华为手机激活是怎么回事
- iframe是什么?iframe用法详解
- 计算机二级vb考试查分,计算机二级vb考试分值
- MySql 删除索引
- Web of Science 数据库导出记录中各个字段的含义
- IDEA Java 死锁
- 【Java基础】【案例】
- 别瞎惊叹常识而已--5个前向实操过程分析
- 在GitLab中集成Azure Kubernetes
- 创意黑板粉笔字效果PPT模板
- ASO优化之什么是应用程序本地化
热门文章
- DSP_Builder设计方法说明_SinWave
- 《纽约邮报》手机客户端推送系统被黑 黑客发送抒情诗
- 通过微信查找SAP TCODE代码
- Mac 苹果OS X小技巧:如何更改文件的默认打开方式
- PHP 判断常量,变量和函数是否存在
- 14.软件架构设计:大型网站技术架构与业务架构融合之道 --- 业务架构思维
- 64.Linux/Unix 系统编程手册(下) -- 伪终端
- 56. Yii Modules
- 33. 深入解析互联网协议的原理
- 4. Phpstorm svn