星空网 > 软件开发 > Java

前端面试高频题:删除数组重复元素的多种方法

最近在想着换工作,去了一家中关村的上市公司,面试官随便问了几个问题其中就提到了怎么删除数组元素的方法,表示这已经是第三次遇到了这个问题了,由于知识口头说说所以就随便说了下,之前用的时候都是直接找的方法库虽然知道大致是怎么写的但是还没有真正写过,网上的方法还是蛮多的这里也给大家分享一个作者写的吧,希望对初学者有所帮助:

//数组去重的方法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    }

原文出处:http://blog.sina.com.cn/s/blog_77a4568a0101d4lq.html

方法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; } 

 

 

 

方法都差不多第三个方法想法还是蛮高明的~




原标题:前端面试高频题:删除数组重复元素的多种方法

关键词:前端

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

港口建设费:https://www.ikjzd.com/w/1573203642396614657
行邮税:https://www.ikjzd.com/w/1573203661535223810
Postfinance:https://www.ikjzd.com/w/1573203662252449794
Pottery Barn:https://www.ikjzd.com/w/1573203680552198145
PowderRoom:https://www.ikjzd.com/w/1573203693387112449
Power Of Attorney(授权书):https://www.ikjzd.com/w/1573203694003331073
旅游景点的打油诗 旅游景点的打油诗怎么写:https://www.vstour.cn/a/366180.html
2024深圳龙岗区文化馆免费音乐培训课程安排+报名方式:https://www.vstour.cn/a/366181.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流