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 ready()的几种实现方法小结
Jun 18 Javascript
读jQuery之十一 添加事件核心方法
Jul 31 Javascript
Javascript 中创建自定义对象的方法汇总
Dec 04 Javascript
使用CoffeeScrip优美方式编写javascript代码
Oct 28 Javascript
图解js图片轮播效果
Dec 20 Javascript
js 动态给元素添加、移除事件的实现方法
Jul 19 Javascript
AngularJS  双向数据绑定详解简单实例
Oct 20 Javascript
基于jQuery实现弹幕APP
Feb 10 Javascript
JavaScript中的编码和解码函数
Feb 15 Javascript
微信小程序新增的拖动组件movable-view使用教程
May 20 Javascript
使用Bootstrap做一个朝代历史表
Dec 10 Javascript
javascript实现搜索筛选功能实例代码
Nov 12 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绘图技术
2013/07/03 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
php简单处理XML数据的方法示例
2017/05/19 PHP
yii2项目实战之restful api授权验证详解
2017/05/20 PHP
拖拉表格的JS函数
2008/11/20 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
JavaScript伸缩的菜单简单示例
2013/12/03 Javascript
JavaScript获取按钮所在form表单id的方法
2015/04/02 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
js捕捉键盘事件和按键键值的方法
2016/10/10 Javascript
Express + Session 实现登录验证功能
2017/09/08 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
2018/03/22 Javascript
微信小程序实现打卡日历功能
2020/09/21 Javascript
微信小程序之左右布局的实现代码
2019/12/13 Javascript
node事件循环和process模块实例分析
2020/02/14 Javascript
Vue基本指令实例图文讲解
2021/02/25 Vue.js
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
Cython 三分钟入门教程
2009/09/17 Python
Python之csv文件从MySQL数据库导入导出的方法
2018/06/21 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
2019/02/21 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
教师自荐信
2013/12/10 职场文书
年度考核自我鉴定
2014/02/02 职场文书
高中生物教学反思
2014/02/05 职场文书
志愿者活动总结
2014/04/28 职场文书
幼儿园师德演讲稿
2014/05/06 职场文书
借款担保书范文
2014/05/13 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
会议主持人开场白台词
2015/05/28 职场文书
招商银行工作证明
2015/06/17 职场文书
导游词之四川熊猫基地
2020/01/13 职场文书
如何理解及使用Python闭包
2021/06/01 Python