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中最简洁的编码html字符串的方法
Oct 11 Javascript
jQuery中:lt选择器用法实例
Dec 29 Javascript
Javascript中使用parseInt函数需要注意的问题
Apr 02 Javascript
JavaScript实现把数字转换成中文
Jun 29 Javascript
Sublime Text 3常用插件及安装方法
Dec 16 Javascript
Jquery实现跨域异步上传文件总结
Feb 03 Javascript
VUE element-ui 写个复用Table组件的示例代码
Nov 18 Javascript
vue2 前端搜索实现示例
Feb 26 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
Sep 18 Javascript
详解webpack 最简打包结果分析
Feb 20 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
Nov 17 Vue.js
JS原生实现轮播图的几种方法
Mar 23 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
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
PHP中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
js 多种变量定义(对象直接量,数组直接量和函数直接量)
2010/05/24 Javascript
JavaScript学习笔记记录我的旅程
2012/05/23 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
jQuery File Upload文件上传插件使用详解
2016/12/06 Javascript
bootstrap选项卡使用方法解析
2017/01/11 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
JavaScript函数绑定用法实例分析
2017/11/14 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
2015/04/25 Python
详解Django框架中用context来解析模板的方法
2015/07/20 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
学习Python列表的基础知识汇总
2020/03/10 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
python中tkinter窗口位置\坐标\大小等实现示例
2020/07/09 Python
python操作redis数据库的三种方法
2020/09/10 Python
Perfume’s Club中文官网:西班牙美妆在线零售品牌
2020/08/24 全球购物
工作岗位说明书模板
2014/05/09 职场文书
高中军训的心得体会
2014/09/01 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
详解运行Python的神器Jupyter Notebook
2021/06/03 Python