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


本文实例讲述了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程序设计有所帮助。



相关阅读:
js仿3366小游戏选字游戏
node-http-proxy修改响应结果实例代码
Win10安装率高暴虐Win8!你就是第二个Vista
如何让安卓(Android)子控件超出父控件的范围显示
详细了解CSS中的class与id区别及用法
多个checkbox被选中时如何判断是否有自己想要的
Linux系统的电脑上调整屏幕亮度的方法
如何创建一个WinXP的域环境并将计算机加入到域中
《JavaScript高级编程》学习笔记之object和array引用类型
jquery+json实现数据二级联动的方法
node.js连接mongoDB数据库 快速搭建自己的web服务
PHP中开启gzip压缩的2种方法
win7电脑系怎么设置不睡眠、不自动黑屏?
详解PNG图片
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 CMS SQL jQuery C# C++ java Android IOS oracle MongoDB PostgreSQL SQLite 交通频道 凉山-岱山 潍坊-金华 韶关-怒江 益阳-定西 莆田-通化 宜春-珠海 南通-湘潭 攀枝花-宿州 文登-毕节 河源-厦门 阳江-福州 泰兴-张家港 平湖-佛山 池州-定西 张掖-广州 乌海-呼伦贝尔 大理-大同 辽阳-连云港 东台-四会 蚌埠-广饶 宿迁-防城港 长春-铜陵 楚雄-定西 张家口-曲靖 大丰-长春 如皋-韶关 宁德-北海 黄南-随州 海西-玉树 汕头-红河 莱芜-溧阳 南昌-蓟县 中山-昆山 葫芦岛-淮安 即墨-瑞安 安庆-丹东 拉萨-盘锦 揭阳-仙桃 连云港-河津 绥化-仪征 新密-日喀则 兰州-商丘 娄底-三门峡 滁州-乐清 偃师-盐城 海门-吉林 江阴-金昌 海宁-天门 连云港-漯河 泰兴-内江 绥化-乌海 白山-长治 绍兴-安康 新余-防城港 大石桥-银川 神木-衡水 临沂-金昌 潮州-镇江 吉林-吐鲁番 庆阳-齐齐哈尔 安吉-嘉峪关 晋城-如皋 漳州-平凉 湖州-嘉兴 河池-聊城 九江-深圳 莱州-诸城 启东-滨州 如东-宜春 唐山-宜兴 孝感-滨州 三亚-沈阳 宁波-齐齐哈尔 吐鲁番-海东 河源-滕州 九江-安吉 鹤岗-铜仁 大同-开封 和田-东莞 海门-果洛 东光-黄村 镇江-伊宁 大虎山-兖州 鳌江-瓦屋山 兰州-泡子 楚鲁图-郭尔奔敖包 新化南-衢州 嘉峪关南-张掖西 青县-龙华 石家庄北-廊坊北 五龙背-兴城 抚松-梅河口 呼和浩特东-郑州 漳州-涵江 湟源-格尔木 花园口-北井子 朝阳村-铁岭 东镇-闻喜 徐州-昆山 呼和浩特东-临颍 石家庄-兴隆县 穆棱-兴安岭 七台河-佛岭 永安-萍乡 商丘-银川 北京-保定 宿州-东莞东 抚远-福利屯 宜兴-渭南北 新乡-略阳 台前-前磨头 潍坊-兴平 南宁-茶陵南 松江-株洲 沈阳-杨树岭 武昌-阳平关 安陆-商洛 同心-咸宁 无锡-江山 明安-高家村 双峰北-玉林 镇安-荣昌 兴平-襄阳 荣成-蚌埠南 苏州园区-戚墅堰 新固镇-武安 哈达阳-金州 惠州-上饶 十堰-南平南 海安县-如东 福清-贵定北 平凉南-黄羊湾 宜宾-邓家湾 平顶山西-静海 塘沽-海林 汝州-兰州 广宁-珠海 华山北-白洋淀 丹东-通远堡西 红安西-肥东 太原东-辛集 合浦-柳州 双辽-讷尔克气 刁家段-桑根达来 精河南-乌西 淮南-潼关 定边-藁城 广州-三水南 安图-六道河 景德镇-上饶 武汉-湖州 广州北-韶关东 轮台-疏勒河 白城-桑根达来 东台-天水 苇河-帽儿山 三把火-河洛营 张家口南-应县 沙河市-恩施 新津-峨眉山

Copyright © 2016 phpStudy |