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 兼容FF的onmouseenter和onmouseleave的代码
Jul 19 Javascript
ASP小贴士/ASP Tips javascript tips可以当桌面
Dec 10 Javascript
多浏览器兼容的获取元素和鼠标的位置的js代码
Dec 15 Javascript
javascript中interval与setTimeOut的区别示例介绍
Mar 14 Javascript
jquery获取当前日期的方法
Jan 14 Javascript
JavaScript中的Math.atan2()方法使用详解
Jun 15 Javascript
javascript常用功能汇总
Jul 05 Javascript
微信小程序实现同一页面取值的方法分析
Apr 30 Javascript
react native 仿微信聊天室实例代码
Sep 17 Javascript
使用vue制作滑动标签
Sep 21 Javascript
Javascript摸拟自由落体与上抛运动原理与实现方法详解
Apr 08 Javascript
vue自定义指令和动态路由实现权限控制
Aug 28 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
实现了一个PHP5的getter/setter基类的代码
2007/02/25 PHP
PHP如何将log信息写入服务器中的log文件
2015/07/29 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
js编码之encodeURIComponent使用介绍(asp,php)
2012/03/01 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
vue2.x+webpack快速搭建前端项目框架详解
2017/11/30 Javascript
angular 实时监听input框value值的变化触发函数方法
2018/08/31 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
继承行为在 ES5 与 ES6 中的区别详解
2019/12/24 Javascript
WebStorm中如何将自己的代码上传到github示例详解
2020/10/28 Javascript
详解Python import方法引入模块的实例
2017/08/02 Python
Python 正则表达式匹配字符串中的http链接方法
2018/12/25 Python
WxPython实现无边框界面
2019/11/18 Python
Python实现大数据收集至excel的思路详解
2020/01/03 Python
Python实现仿射密码的思路详解
2020/04/23 Python
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
澳大利亚领先的在线机械五金、园艺和存储专家:Edisons
2018/03/24 全球购物
美国最大的半成品净菜电商:Blue Apron(蓝围裙)
2018/04/27 全球购物
迷你西餐厅创业计划书范文
2013/12/31 职场文书
集团公司人力资源部岗位职责
2014/01/03 职场文书
食品安全检查制度
2014/02/03 职场文书
超市中秋节促销方案
2014/03/21 职场文书
演讲稿格式范文
2014/05/19 职场文书
环保志愿者活动总结
2014/06/27 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
2015人事行政工作总结范文
2015/05/21 职场文书
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技