JavaScript几种数组去掉重复值的方法推荐


Posted in Javascript onApril 12, 2016

数组去重复是一个常见的需求,我们暂时考虑同类型的数组去重复。主要是理清思路和考虑下性能。以下方法,网上基本都有,这里只是简单地总结一下。

思路:

1.遍历数组,一一比较,比较到相同的就删除后面的
2.遍历数组,一一比较,比较到相同的,跳过前面重复的,不相同的放入新数组
3.任取一个数组元素放入新数组,遍历剩下的数组元素任取一个,与新数组的元素一一比较,如果有不同的,放入新数组。
4.遍历数组,取一个元素,作为对象的属性,判断属性是否存在

1. 删除后面重复的:

function ov1(arr){
  //var a1=((new Date).getTime())
  for(var i=0;i<arr.length;i++)
    for(var j=i+1;j<arr.length;j++)
      if(arr[i]===arr[j]){arr.splice(j,1);j--;}      
  //console.info((new Date).getTime()-a1)        
  return arr.sort(function(a,b){return a-b});
}

2. 这个是常规的方法,比较好理解,如果相同则跳出循环

function ov2(a) {
  //var a1=((new Date).getTime())
  var b = [], n = a.length, i, j;
  for (i = 0; i < n; i++) {
    for (j = i + 1; j < n; j++)
      if (a[i] === a[j]){j=false;break;}
    if(j)b.push(a[i]);
    }
  //console.info((new Date).getTime()-a1)  
  return b.sort(function(a,b){return a-b});
}

3. 这个我花了好长时间明白的,这里j循环虽然继续了,但是i值已经改变了。就等于是一个新的i循环:

function ov3(a) {
  //var a1=((new Date).getTime())
  var b = [], n = a.length, i, j;
  for (i = 0; i < n; i++) {
    for (j = i + 1; j < n; j++)
    if (a[i] === a[j])j=++i
  b.push(a[i]);}
  //console.info((new Date).getTime()-a1)  
  return b.sort(function(a,b){return a-b});
}

4. 保证新数组中的都是唯一的

function ov4(ar){
//var a1=((new Date).getTime())
  var m=[],f;
  for(var i=0;i<ar.length;i++){
  f=true; 
  for(var j=0;j<m.length;j++)
  if(ar[i]===m[j]){f=false;break;};
  if(f)m.push(ar[i])}
//console.info((new Date).getTime()-a1)  
  return m.sort(function(a,b){return a-b});
}

5. 用对象属性

function ov5(ar){
	//  var a1=(new Date).getTime()
			var m,n=[],o= {};
			for (var i=0;(m= ar[i])!==undefined;i++)
			if (!o[m]){n.push(m);o[m]=true;}
	//  console.info((new Date).getTime()-a1)  
		return n.sort(function(a,b){return a-b});;
		}

以上这篇JavaScript几种数组去掉重复值的方法推荐就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript-简单的计算器实现步骤分解(附图)
May 30 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
Jun 03 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
Mar 23 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
Aug 08 Javascript
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例
Aug 25 Javascript
微信小程序之绑定点击事件实例详解
Jul 07 Javascript
jQuery实现的简单无刷新评论功能示例
Nov 08 jQuery
jQuery实现的简单对话框拖动功能示例
Jun 05 jQuery
Bootstrap Table列宽拖动的方法
Aug 15 Javascript
Node.js net模块功能及事件监听用法分析
Jan 05 Javascript
使用异步组件优化Vue应用程序的性能
Apr 28 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
May 03 Javascript
学习使用bootstrap基本控件(table、form、button)
Apr 12 #Javascript
如何高效率去掉js数组中的重复项
Apr 12 #Javascript
学习使用bootstrap3栅格系统
Apr 12 #Javascript
分享两段简单的JS代码防止SQL注入
Apr 12 #Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
Apr 12 #Javascript
原生js实现百叶窗效果及原理介绍
Apr 12 #Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
Apr 12 #Javascript
You might like
php通过字符串调用函数示例
2014/03/02 PHP
PHP几个实用自定义函数小结
2016/01/25 PHP
PHP解决中文乱码
2017/04/28 PHP
Yii框架组件的事件机制原理与用法分析
2020/04/07 PHP
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
jquery 双色表格实现代码
2009/12/08 Javascript
JavaScript Accessor实现说明
2010/12/06 Javascript
html中的input标签的checked属性jquery判断代码
2012/09/19 Javascript
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
Javascript this 关键字 详解
2014/10/22 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
2016/05/26 Javascript
需要牢记的JavaScript基础知识
2016/09/25 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
微信小程序 本地图片按照屏幕尺寸处理
2017/08/04 Javascript
Angular4 ElementRef的应用
2018/02/26 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
Python操作json的方法实例分析
2018/12/06 Python
用Python解决x的n次方问题
2019/02/08 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
关于python中的xpath解析定位
2020/03/06 Python
python 录制系统声音的示例
2020/12/21 Python
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
工程监理应届生求职信
2013/11/09 职场文书
小学生学雷锋演讲稿
2014/04/25 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
异地年检委托书范本
2014/09/24 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL
MySQL的表级锁,行级锁,排它锁和共享锁
2022/07/15 MySQL