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 利用闭包模拟对象的私有属性
Dec 29 Javascript
jquery DIV撑大让滚动条滚到最底部代码
Jun 06 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
Oct 14 Javascript
js使用递归解析xml
Dec 12 Javascript
跟我学习javascript解决异步编程异常方案
Nov 23 Javascript
浅析Bootstrap缩略图组件与警示框组件
Apr 29 Javascript
完美的js div拖拽实例代码
Sep 24 Javascript
xmlplus组件设计系列之按钮(2)
Apr 26 Javascript
JS实现队列的先进先出功能示例
May 10 Javascript
JavaScript函数的4种调用方法实例分析
Mar 05 Javascript
JS中FileReader类实现文件上传及时预览功能
Mar 27 Javascript
vue实现登录拦截
Jun 29 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
使用MaxMind 根据IP地址对访问者定位
2006/10/09 PHP
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
php输出全球各个时区列表的方法
2015/03/31 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
网上抓的一个特效
2007/05/11 Javascript
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
PHP PDO操作总结
2014/11/17 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
AngularJS入门教程之静态模板详解
2016/08/18 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
JS动态添加的div点击跳转到另一页面实现代码
2017/09/30 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
Python生成rsa密钥对操作示例
2019/04/26 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
解决TensorFlow GPU版出现OOM错误的问题
2020/02/03 Python
Python使用re模块验证危险字符
2020/05/21 Python
css3 transform导致子元素固定定位变成绝对定位的方法
2020/03/06 HTML / CSS
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
教师个人自我评价范文
2014/04/13 职场文书
团队口号大全
2014/06/06 职场文书
电力培训心得体会
2014/09/02 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android