數組去重

對下列數組去重:
var arr = ['aa','bb','cc','',1,0,'1',1,'bb',null,undefine,null];
要求考慮兼容性和效率javascript

方法一

function unique(arr){ var result = []; for (var i = 0;i<arr.length;i++){ //若是當前數組的第i項已經保存進了臨時數組,忽略掉 //不然的話把當前項push到臨時數組裏面 if(result.indexOf(arr[i]) < 0) result.push(arr[i]); //indexOf 返回元素在result中的位置,若是沒有返回-1; } return result; } var arr = ['aa','bb','cc','',1,0,'1',1,'bb',null,undefine,null]; console.log(unique(arr));

 

方法二

function unique(arr){ var result = []; var hash = {}; for ( var i=0;i<arr.length;i++){ var key = (typeof arr[i]) + arr[i]; if(!hash[key]){ result.push(arr[i]); hash[key] = true; } } return result; } var arr = ['aa','bb','cc','',1,0,'1',1,'bb',null,undefine,null]; console.log(unique(arr));

 

方法三

function unique(arr){ var n = [this[0]]; //結果數組 for(var i =1;i<this.length;i++){ //從第二項開始遍歷 //若是當前數組的第i項在當前數組中第一次出現的位置不是i //那麼表示第i項是重複的,忽略掉。不然存入結果數組 if(this.indexOf(this[i]) == i) n.push(this[i]); } return n; } var arr = ['aa','bb','cc','',1,0,'1',1,'bb',null,undefine,null]; console.log(unique(arr)); 

方法四

function unique(arr){ this.sort(); var re = [this[0]]; for (var i =1;i<this.length;i++){ if( this[i] != re[re,length-1] ){ re.push(this[i]); } } } var arr = ['aa','bb','cc','',1,0,'1',1,'bb',null,undefine,null]; console.log(unique(arr)); 

先把數組排序,而後比較相鄰的兩個值。java

方法五

//去重(ES6) function unique2(array){ return Array.from(new Set(array)); } var arr = ['aa','bb','cc','',1,0,'1',1,'bb',null,undefine,null]; console.log(unique(arr));
相關文章
相關標籤/搜索