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 常用代码技巧大收集
Feb 25 Javascript
jquery 多级下拉菜单核心代码
May 21 Javascript
formValidator3.3的ajaxValidator一些异常分析
Jul 12 Javascript
jQuery的each终止或跳过示例代码
Dec 12 Javascript
js实现的点击div区域外隐藏div区域
Jun 30 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
Jun 13 Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
Feb 22 Javascript
详解JavaScript按概率随机生成事件
Aug 02 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
Sep 11 Javascript
详解VUE前端按钮权限控制
Apr 26 Javascript
微信小程序模板消息推送的两种实现方式
Aug 27 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 Vue.js
学习使用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
西德产收音机
2021/03/01 无线电
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
php如何连接sql server
2015/10/16 PHP
PHP在线书签系统分享
2016/01/04 PHP
10个对初学者非常有用的PHP技巧
2016/04/06 PHP
基于laravel where的高级使用方法
2019/10/10 PHP
jquery一般方法介绍 入门参考
2011/06/21 Javascript
js自动下载文件到本地的实现代码
2013/04/28 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
2013/06/05 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
自编jQuery插件实现模拟alert和confirm
2014/09/01 Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
2015/01/13 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
AngularJS之自定义服务详解(factory、service、provider)
2017/04/14 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
2018/09/11 Javascript
jquery实现的分页显示功能示例
2019/08/23 jQuery
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
学习python 之编写简单乘法运算题
2016/02/27 Python
浅谈编码,解码,乱码的问题
2016/12/30 Python
Python3实现的画图及加载图片动画效果示例
2018/01/19 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
2018/08/02 Python
对Python3 * 和 ** 运算符详解
2019/02/16 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
python绘制彩虹图
2019/12/16 Python
详解python中的闭包
2020/09/07 Python
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物
优秀应届本科生求职信
2014/07/19 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
2015年检验科工作总结
2015/04/27 职场文书
地道战观后感300字
2015/06/04 职场文书
MySQL sql模式设置引起的问题
2022/05/15 MySQL