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 相关文章推荐
jquery validation插件表单验证的一个例子
Mar 03 Javascript
myEvent.js javascript跨浏览器事件框架
Oct 24 Javascript
Javascript中获取对象的原型对象的方法小结
Feb 25 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
Mar 11 Javascript
分享Javascript实用方法二
Dec 13 Javascript
用window.onerror捕获并上报Js错误的方法
Jan 27 Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
May 23 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Dec 14 Javascript
JS html时钟制作代码分享
Mar 03 Javascript
Vue.js实战之利用vue-router实现跳转页面
Apr 01 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
Jul 23 Javascript
多种类型jQuery网页验证码插件代码实例
Jan 09 jQuery
学习使用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分页显示制作详细讲解
2006/10/09 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
PHP钩子与简单分发方式实例分析
2017/09/04 PHP
详解PHP发送邮件知识点
2018/05/06 PHP
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
JS获取后台Cookies值的小例子
2013/03/04 Javascript
javascript动态修改Li节点值的方法
2015/01/20 Javascript
easyui-combobox 实现简单的自动补全功能示例
2016/11/08 Javascript
详解js中Number()、parseInt()和parseFloat()的区别
2016/12/20 Javascript
JS实现简易刻度时钟示例代码
2017/03/11 Javascript
jQuery ajax实现省市县三级联动
2021/03/07 Javascript
详解ES6之async+await 同步/异步方案
2017/09/19 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
JavaScript字符串转数字的5种方法及遇到的坑
2018/07/16 Javascript
AngularJS ui-router刷新子页面路由的方法
2018/07/23 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
vue-cli脚手架打包静态资源请求出错的原因与解决
2019/06/06 Javascript
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
Python操作mongodb数据库的方法详解
2018/12/08 Python
Python unittest框架操作实例解析
2020/04/13 Python
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
高中美术教学反思
2014/01/19 职场文书
岗位说明书怎么写
2014/07/30 职场文书
协商一致解除劳动合同协议书
2014/09/14 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
审美与表现自我评价
2015/03/09 职场文书
新生开学寄语大全
2015/05/28 职场文书
人代会简报
2015/07/21 职场文书
法制工作总结2015
2015/07/23 职场文书
小学三年级数学教学反思
2016/02/16 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏