JavaScript 数据去重的常用几种方法
方案一:利用数组的indexOf(一)
原理
先声明一个空数组,然后循环数组成员,利用了数组的indexOf方法去判断当前成员是否存在新数组内,如果不存在则push进去,最后返回新数组得到一个去重后的数组!
代码如下
Array.prototype.unique = function() {var newArr = [],i = 0,len = this.length;for (; i < len; i++) {var tempArr = this[i];if(newArr.indexOf(tempArr) === -1){newArr.push(tempArr);}}return newArr;
};
方案二:利用数组的indexOf方法(二)
原理
创建一个新数组并插入第一个元素,再对数组进行轮询,判断当前元素在数组中的位置,如果不为 i 则表示在数组中已经存在,则不添加!
代码如下:
Array.prototype.unique = function() {var newArr = [this[0]],i = 1,len = this.length;for (; i < len; i++) {var tempArr = this[i];if(this.indexOf(tempArr) === i){newArr.push(tempArr);}}return newArr;
};
方案三:利用对象的hash值
原理:
创建一个obj对象,用于存放当前值得值,对数组进行轮询,判断当前值在obj对象中的值,如果不存在则添加!该方法利用了对象的hash进行了性能上的提升!相对前面两种该方法性能更高一点!
代码如下:
Array.prototype.unique = function() {var obj = {},newArr = [],i = 0,len = this.length;for (; i < len; i++) {var tempArr = this[i];if (!obj[tempArr]) {obj[tempArr] = true;newArr.push(tempArr);}}return newArr;
};
方案四:利用数组排序进行去重
原理
先对数组进行排序,调用了数组内部的sort方法。然后对数组进行轮询,判断当前元素是不是新数组的最后一项,如果不是则表示是第一次添加,直接push进去,否则跳过。
代码如下:
Array.prototype.unique = function() {this.sort();var newArr = [this[0]],i = 0,len = this.length;for (; i < len; i++) {var tempArr = this[i];if(tempArr !== newArr[newArr.length -1]){newArr.push(tempArr);}}return newArr;
};
方案五:利用正则匹配进行去重
原理
先将数组转换成指定符号分割的字符串,然后进行一系列的替换操作,最后split成新的数组。(注意:原来数组成员类型为int的经过该操作后会变成string类型,慎用!!!!)
代码如下:
Array.prototype.unique = function() {return this.sort().join(",,").replace(/(,|^)([^,]+)(,,\2)+(,|$)/g, "$1$2$4").replace(/,,+/g, ",").replace(/,$/, "").split(",");
}
方案六:利用Set进行去重
function unique(arr){return Array.from(new Set(arr));
}
转载于:https://www.cnblogs.com/damingge/p/6507597.html
JavaScript 数据去重的常用几种方法相关推荐
- 【Arduino串口数据保存到excel中常用三种方法】
[Arduino串口数据保存到excel中常用三种方法] 1. 前言 2. 利用excel自带Data Streamer读取 2.1 启用 Data Streamer 加载项 2.2 刷写代码并将微控 ...
- java mysql防重复提交_防止数据重复提交的6种方法(超简单)!
有位朋友,某天突然问磊哥:在 Java 中,防止重复提交最简单的方案是什么? 这句话中包含了两个关键信息,第一:防止重复提交:第二:最简单. 于是磊哥问他,是单机环境还是分布式环境? 得到的反馈是单机 ...
- [转]asp.net导出数据到Excel的三种方法
原文出处:asp.net导出数据到Excel的几种方法(1/3) .asp.net导出数据到Excel的几种方法(2/3).asp.net导出数据到Excel的几种方法(3/3) asp.net导出到 ...
- getclass方法_防止数据重复提交的6种方法(超简单)!
有位朋友,某天突然问磊哥:在 Java 中,防止重复提交最简单的方案是什么? 这句话中包含了两个关键信息,第一:防止重复提交:第二:最简单. 于是磊哥问他,是单机环境还是分布式环境? 得到的反馈是单机 ...
- JavaScript 实现网页截屏五种方法
JavaScript 实现网页截屏五种方法 最近研究了下如何利用JavaScript实现网页截屏,包括在浏览器运行的JS,以及在后台运行的nodeJs的方法.主要看了以下几个: PhantomJS P ...
- 数据分析常用三种方法
数据分析常用三种方法:趋势分析.对比分析.细分分析 1. 趋势分析 趋势分析般而言,适用于产品核心指标的长期跟踪,比如,点击率,GMV,活跃用户数等.做出简单的数据趋势图,并不算是趋势分析,趋势分析更 ...
- 创建JSONArray的常用四种方法
创建JSONArray的常用四种方法 1.从头或者从零开始,创建一个JSONArray(Creating a JSONArray from scratch) 实例1: Java代码 JSONA ...
- mysql去重查询的三种方法
文章目录 前言 一.插入测试数据 二.剔除重复数据方法 1.方法一:使用distinct 2.方法二:使用group by 3.方法三:使用开窗函数 总结 前言 数据库生成环境中经常会遇到表中有重复的 ...
- 芯片数据的差异分析主要包括三种方法 ANCOVA进行差异分析 为何不用deseq2
Shared Gene Expression Alterations in Schizophrenia and Bipolar Disorder Expression of cilium-associ ...
最新文章
- JZOJ 5643. 【NOI2018模拟4.10】最小代价
- Oracle入门(二)之服务启动bat
- SCP-bzoj-1019
- zabbix监控MHA及自动启动
- 重读 CenterNet,一个在Github有5.2K星标的目标检测算法
- MySql的架构和历史
- MySQL--pt-osc工具学习
- 自动控制理论 第一章 思维导图
- pdca管理循环基本主张_PDCA管理循环图怎么画?干货分享高颜值图形图表软件
- 关于Linux备份文件和应用的几个命令:tar和cp
- Ubuntu18.04.4安装与配置,让老机焕发青春
- C语言 printf() 函数,总结笔记记录
- 采用蒙特卡罗方法生成zipf分布随机数据
- jmp指令流程图怎么写_流程图模板
- Java数据库中台项目,电商,CMS轻松实现,包含数据库源文件
- 最便宜的html手机,便宜手机
- 长沙电销机器人排名_厂家大揭秘:电销外呼系统排名
- 2021年中国共享单车行业发展现状及市场格局分析:市场规模达320亿元,同比增长29.55%[图]
- Laravel引入谷歌验证器
- 黑客道德准则 不是所有的黑客都是罪犯