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动态加载三
Aug 22 Javascript
HTML5实现留言和回复页面样式
Jul 22 Javascript
完美JQuery图片切换效果的简单实现
Jul 21 Javascript
AngularJS 应用身份认证的技巧总结
Nov 07 Javascript
JS正则表达式完美实现身份证校验功能
Oct 18 Javascript
基于node下的http小爬虫的示例代码
Jan 11 Javascript
详解Angular结合zTree异步加载节点数据
Jan 20 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
Aug 25 Javascript
VUE 实现滚动监听 导航栏置顶的方法
Sep 11 Javascript
angular学习之动态创建表单的方法
Dec 07 Javascript
antd组件Upload实现自己上传的实现示例
Dec 18 Javascript
深入理解es6块级作用域的使用
Mar 28 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函数strip_tags的一个bug浅析
2014/05/22 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
php提交表单时保留多个空格及换行的文本样式的方法
2017/06/20 PHP
轻轻松松学JS调试(不下载任何工具)
2010/04/14 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
2012/06/14 Javascript
JS实现标签页效果(配合css)
2013/04/03 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
javascript实现简单的鼠标拖动效果实例
2015/04/10 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
js获取html的span标签的值方法(超简单)
2016/07/26 Javascript
JavaScript奇技淫巧44招【实用】
2016/12/11 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
hammer.js实现图片手势放大效果
2017/08/29 Javascript
vue父组件向子组件(props)传递数据的方法
2018/01/02 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
10分钟学会js处理json的常用方法
2020/12/06 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
Python中Class类用法实例分析
2015/11/12 Python
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
PyTorch基本数据类型(一)
2019/05/22 Python
Python转换时间的图文方法
2019/07/01 Python
python实现在函数图像上添加文字和标注的方法
2019/07/08 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
flask实现验证码并验证功能
2019/12/05 Python
python3正则模块re的使用方法详解
2020/02/11 Python
美国高端寝具品牌:Coyuchi
2017/02/08 全球购物
英国二手物品交易网站:Preloved
2017/10/06 全球购物
介绍一下MD5加密算法
2016/11/12 面试题
挂职个人工作总结
2015/03/05 职场文书
MySQL中你可能忽略的COLLATION实例详解
2021/05/12 MySQL
Spring Boot优化后启动速度快到飞起技巧示例
2022/07/23 Java/Android