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 相关文章推荐
ExtJS Window 最小化的一种方法
Nov 18 Javascript
基于JQuery实现相同内容合并单元格的代码
Jan 12 Javascript
javascript各浏览器中option元素的表现差异
Apr 07 Javascript
获取客户端网卡MAC地址和IP地址实现JS代码
Mar 17 Javascript
jquery实现图片左右切换的方法
May 07 Javascript
jquery实现全选、反选、获得所有选中的checkbox
Sep 13 Javascript
Javascript面试经典套路reduce函数查重
Mar 23 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
Jun 21 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
Dec 07 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
May 22 jQuery
jquery实现二级导航下拉菜单效果实例
May 14 jQuery
vue 添加和编辑用同一个表单,el-form表单提交后清空表单数据操作
Aug 03 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
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
WordPress中用于获取搜索表单的PHP函数使用解析
2016/01/05 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
JavaScript 学习笔记(四)
2009/12/31 Javascript
动态载入/删除/更新外部 JavaScript/Css 文件的代码
2010/07/03 Javascript
浅析jQuery的链式调用之each函数
2010/12/03 Javascript
js原生appendChild的bug解决心得分享
2013/07/01 Javascript
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
Javascript事件实例详解
2013/11/06 Javascript
jquery submit ie6下失效的原因分析及解决方法
2013/11/15 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
2016/12/14 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
Python MD5文件生成码
2009/01/12 Python
python高级特性和高阶函数及使用详解
2018/10/17 Python
在Pycharm中项目解释器与环境变量的设置方法
2018/10/29 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
深入浅析python 中的self和cls的区别
2020/06/20 Python
Python 如何创建一个线程池
2020/07/28 Python
浅谈h5自定义audio(问题及解决)
2016/08/19 HTML / CSS
在线购买澳大利亚设计师手拿包和奢华晚装手袋:Olga Berg
2019/03/20 全球购物
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
岗位职责怎么写
2014/03/14 职场文书
清正廉洁演讲稿
2014/05/22 职场文书
英语辞职信范文
2015/02/28 职场文书
大学生受助感言
2015/08/01 职场文书
员工试用期工作总结
2019/06/20 职场文书
用python删除文件夹中的重复图片(图片去重)
2021/05/12 Python