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 相关文章推荐
jquery实现的一个简单进度条效果实例
May 12 Javascript
Javascript中的五种数据类型详解
Dec 26 Javascript
javascript内置对象操作详解
Feb 04 Javascript
js运动事件函数详解
Oct 21 Javascript
jquery 判断是否支持Placeholder属性的方法
Feb 07 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
Mar 03 Javascript
详解微信小程序 登录获取unionid
Jun 27 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
Feb 08 Javascript
iview table render集成switch开关的实例
Mar 14 Javascript
Vue组件创建和传值的方法
Aug 17 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
Nov 14 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
Oct 30 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实现多服务器session共享之NFS共享的方法
2007/03/16 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
2014/05/06 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
用javascript获取地址栏参数
2006/12/22 Javascript
Javascript 更新 JavaScript 数组的 uniq 方法
2008/01/23 Javascript
Jquery+CSS3实现一款简洁大气带滑动效果的弹出层
2013/05/15 Javascript
JavaScript实现梯形乘法表的方法
2015/04/25 Javascript
jQuery实现彩带延伸效果的网页加载条loading动画
2015/10/29 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
微信小程序 template模板详解及实例
2017/02/21 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
2018/04/07 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
15分钟深入了解JS继承分类、原理与用法
2019/01/19 Javascript
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
Python压缩和解压缩zip文件
2015/02/14 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
Python3转换html到pdf的不同解决方案
2019/03/11 Python
Python中如何导入类示例详解
2019/04/17 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
CSS3近阶段篇之酷炫的3D旋转透视
2016/04/28 HTML / CSS
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
怎样声明子类
2013/07/02 面试题
群众路线教育实践活动总结
2014/10/30 职场文书
检讨书模板大全
2015/05/07 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
python基础之停用词过滤详解
2021/04/21 Python
Java Socket实现多人聊天系统
2021/07/15 Java/Android
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js
使用Nginx的访问日志统计PV与UV
2022/05/06 Servers