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 var变量隐式声明方法
Oct 19 Javascript
js 取时间差去掉周六周日实现代码
Dec 25 Javascript
js动态控制table的tr、td增加及删除的具体实现
Apr 30 Javascript
jQuery选择器源码解读(一):Sizzle方法
Mar 31 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
Jan 05 Javascript
值得分享的轻量级Bootstrap Table表格插件
May 30 Javascript
jQuery自定义数值抽奖活动代码
Jun 11 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
Jun 22 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
Aug 07 Javascript
解决layui调用自定义方法提示未定义的问题
Sep 14 Javascript
Layui 解决表格异步调用后台分页的问题
Oct 26 Javascript
js实现浏览器打印功能的示例代码
Jul 15 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脚本运行时的超时机制详解
2016/02/17 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
php中this关键字用法分析
2016/12/07 PHP
使用Jquery Aajx访问WCF服务(GET、POST、PUT、DELETE)
2012/03/16 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
2014/02/19 Javascript
JS访问DOM节点方法详解
2016/11/29 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
Python爬虫之正则表达式基本用法实例分析
2018/08/08 Python
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
Python3数字求和的实例
2019/02/19 Python
简单了解Django应用app及分布式路由
2019/07/24 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
Python with标签使用方法解析
2020/01/17 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
华润集团网上药店:健一网
2016/09/19 全球购物
英国团购网站:Groupon英国
2017/11/28 全球购物
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
安全负责人任命书
2014/06/06 职场文书
大学生见习期满自我鉴定
2014/09/13 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
2014年党务工作总结
2014/11/25 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
廉洁自律承诺书2015
2015/01/22 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
傅雷家书读书笔记
2015/06/29 职场文书
Pandas数据结构之Series的使用
2022/03/31 Python