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框架的AJAX实例代码
Nov 03 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
Jan 23 Javascript
简单实现轮播图效果的实例
Jul 15 Javascript
BootStrap CSS全局样式和表格样式源码解析
Jan 20 Javascript
jQuery ajax读取本地json文件的实例
Oct 31 jQuery
Node之简单的前后端交互(实例讲解)
Nov 14 Javascript
ES6之模版字符串的具体使用
May 17 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
Nov 09 Javascript
利用Webpack实现小程序多项目管理的方法
Feb 25 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
Apr 26 Javascript
vue接口请求加密实例
Aug 11 Javascript
原生js实现自定义滚动条
Jan 20 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
JAVA/JSP学习系列之四
2006/10/09 PHP
第五节--克隆
2006/11/16 PHP
php抓取页面与代码解析 推荐
2010/07/23 PHP
PHP多文件上传实例
2015/07/09 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
jquery和javascript中如何将一元素的内容赋给另一元素
2014/01/09 Javascript
JS获取当前网页大小以及屏幕分辨率等
2014/09/05 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
JS基于myFocus库实现各种功能的tab选项卡切换效果
2015/09/19 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
jQuery给指定的table动态添加删除行的操作方法
2016/10/12 Javascript
JavaScript正则表达式小结(test|match|search|replace|split|exec)
2016/12/08 Javascript
详解NODEJS基于FFMPEG视频推流测试
2017/11/17 NodeJs
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
Python中遍历字典过程中更改元素导致异常的解决方法
2016/05/12 Python
新手如何发布Python项目开源包过程详解
2019/07/11 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
Keras搭建自编码器操作
2020/07/03 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
Servlet方面面试题
2016/09/28 面试题
创业大赛策划书
2014/03/01 职场文书
质量提升方案
2014/06/16 职场文书
关爱老人标语
2014/06/21 职场文书
项目投资合作意向书
2014/07/29 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
学术研讨会主持词
2015/07/04 职场文书
纪检部部长竞选稿
2015/11/21 职场文书
2016年“我们的节日·清明节”活动总结
2016/04/01 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript