javascript删除数组重复元素的方法汇总


Posted in Javascript onJune 24, 2015

本文实例讲述了javascript删除数组重复元素的方法。分享给大家供大家参考。具体分析如下:

这里分享一个前端面试高频题,主要实现javascript删除数组重复元素。希望对初学者有所帮助

//数组去重的方法
Array.prototype.unique=function(){
  //集中声明变量
  var 
   oldArr=this,
   newArr=[oldArr[0]],
   len=oldArr.length,
   i=1;
  //过滤空数组
  if(!len) return this;
  //过滤重复元素
  for(;i<len;i++){
    newArr.indexOf(oldArr[i])<0 ? newArr.push(_this) : ''; 
  }
  //返回过滤后的数组没有影响原数组
  return newArr;
}
var arr=['a','a','b','a','c','d'];
console.log(arr.unique());
//["a", "b", "c", "d", unique: function]

虽然网上也有很多而且自己写的也不咋地,但是毕竟自己写的逻辑清楚以后还可以顺着逻辑扩展比如扩展到对象元素去重或者是可以同时操作多个数组等等这里再放上别人的写的几个方法可以综合比较下

方法1:

function oSort(arr)
{
  var result ={};
  var newArr=[];
  for(var i=0;i
  {
 if(!result[arr[i]])
 {
   newArr.push(arr[i])
   result[arr[i]]=1
 }
  }
  return newArr
}

方法2:

遍历要删除的数组arr, 把元素分别放入另一个数组tmp中,在判断该元素在arr中不存在才允许放入tmp中
用到两个函数:for ...in 和 indexOf()

var student = ['qiang','ming','tao','li','liang','you','qiang','tao'];
 function unique(arr){
   // 遍历arr,把元素分别放入tmp数组(不存在才放)
   var tmp = new Array();
   for(var i in arr){
  //该元素在tmp内部不存在才允许追加
  if(tmp.indexOf(arr[i])==-1){
  }
 }
  return tmp;
}

方法3:

把目标数组arr的元素值和键的位置调换 自动就把重复的元素给删除掉了,调换后的样子:array('qiang'=>1,'ming'=>1,'tao'=>1)

<script type="text/javascript">
  var student = ['qiang','ming','tao','li','liang','you','qiang','tao'];
  function unique(arr){
    var tmp = new Array();
    for(var m in arr){
      tmp[arr[m]]=1;
    }
    //再把键和值的位置再次调换
    var tmparr = new Array();
    for(var n in tmp){
     tmparr.push(n);
    }
   return tmparr;
 }
</script>

方法4

/**
* 去除数组重复元素
*/
function uniqueArray(data){ 
  data = data || []; 
  var a = {}; 
  for (var i=0; i<data.length; i++) { 
    var v = data[i]; 
    if (typeof(a[v]) == 'undefined'){ 
      a[v] = 1; 
    } 
  }; 
  data.length=0; 
  for (var i in a){ 
    data[data.length] = i; 
  } 
  return data; 
}

方法都差不多第三个方法想法还是蛮高明的~

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
javascript 字符串连接的性能问题(多浏览器)
Nov 18 Javascript
js prototype截取字符串函数
Apr 01 Javascript
jQuery写fadeTo示例代码
Feb 21 Javascript
jQuery实现图片轮播特效代码分享
Sep 15 Javascript
javascript断点调试心得分享
Apr 23 Javascript
JavaScript实现简单的拖动效果
Jul 02 Javascript
基于jQuery实现中英文切换导航条效果
Sep 18 Javascript
jQuery 遍历map()方法详解
Nov 04 Javascript
webpack处理 css\less\sass 样式的方法
Aug 21 Javascript
vue+swiper实现侧滑菜单效果
Dec 28 Javascript
记React connect的几种写法(小结)
Sep 18 Javascript
vue获取data数据改变前后的值方法
Nov 07 Javascript
js实现跨域的方法实例详解
Jun 24 #Javascript
JavaScript中的Promise使用详解
Jun 24 #Javascript
JavaScript面对国际化编程时的一些建议
Jun 24 #Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
Jun 24 #Javascript
在Mac OS下使用Node.js的简单教程
Jun 24 #Javascript
在Node.js应用中使用Redis的方法简介
Jun 24 #Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
Jun 24 #Javascript
You might like
php下保存远程图片到本地的办法
2010/08/08 PHP
基于Zookeeper的使用详解
2013/05/02 PHP
php中数据库连接方式pdo和mysqli对比分析
2015/02/25 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
JavaScript实现简单图片翻转的方法
2015/04/17 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
利用JQuery阻止事件冒泡
2016/12/01 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
js时间控件只显示年月
2017/01/08 Javascript
基于JavaScript实现焦点图轮播效果
2017/03/27 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
解决Vue-cli无法编译es6的问题
2020/10/30 Javascript
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
Python编程argparse入门浅析
2018/02/07 Python
Python实现购物车购物小程序
2018/04/18 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
Python爬虫爬取糗事百科段子实例分享
2020/07/31 Python
使用phonegap创建联系人的实现方法
2017/03/30 HTML / CSS
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
大四自我鉴定
2014/02/08 职场文书
烹饪大赛策划方案
2014/05/26 职场文书
大二学生学年自我鉴定
2014/09/12 职场文书
画展邀请函
2015/01/31 职场文书
Spring整合Mybatis的全过程
2021/06/28 Java/Android
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript