總結(jié)Javascript中數(shù)組各種去重的方法
前言
在做javascript開發(fā)的時候,經(jīng)常會遇到數(shù)組元素重復(fù)的問題,而javascript Array又沒有直接提供方法解決此問題,還需要自己去實現(xiàn)。這篇文章總結(jié)了Javascript中數(shù)組各種去重的方法,下面來一起看看。
方法一 利用對象屬性不重復(fù)的特性
Array.prototype.distinct = function (){
var arr = this,
i,
obj = {},
result = [],
len = arr.length;
for(i = 0; i< arr.length; i++){
if(!obj[arr[i]]){ //如果能查找到,證明數(shù)組元素重復(fù)了
obj[arr[i]] = 1;
result.push(arr[i]);
}
}
return result;
};
方法二 雙層循環(huán),外層循環(huán)元素,內(nèi)層循環(huán)時比較值
Array.prototype.distinct = function(){
var arr = this,
result = [],
i,
j,
len = arr.length;
for(i = 0; i < len; i++){
for(j = i + 1; j < len; j++){
if(arr[i] === arr[j]){
j = ++i;
}
}
result.push(arr[i]);
}
return result;
}
方法三 數(shù)組遞歸去重
Array.prototype.distinct = function (){
var arr = this,
len = arr.length;
arr.sort(function(a,b){ //對數(shù)組進行排序才能方便比較
return a - b;
})
function loop(index){
if(index >= 1){
if(arr[index] === arr[index-1]){
arr.splice(index,1);
}
loop(index - 1); //遞歸loop函數(shù)進行去重
}
}
loop(len-1);
return arr;
};
方法四 利用indexOf以及forEach
Array.prototype.distinct = function (){
var arr = this,
result = [],
len = arr.length;
arr.forEach(function(v, i ,arr){ //這里利用map,filter方法也可以實現(xiàn)
var bool = arr.indexOf(v,i+1); //從傳入?yún)?shù)的下一個索引值開始尋找是否存在重復(fù)
if(bool === -1){
result.push(v);
}
})
return result;
};
方法五 利用ES6的set
function dedupe(array){
return Array.from(new Set(array));
}
dedupe([1,1,2,3]) //[1,2,3]
方法六 拓展運算符(…)內(nèi)部使用for…of循環(huán)
let arr = [3,5,2,2,5,5]; let unique = [...new Set(arr)]; //[3,5,2]
總結(jié)
好了,以上就是這篇文章的全部內(nèi)容了,個人比較喜歡使用方法一,不會對原數(shù)組進行修改,希望這篇文章對大家能有所幫助,如果有疑問大家可以留言交流。
相關(guān)文章
JavaScript String 對象常用方法總結(jié)
下面小編就為大家?guī)硪黄狫avaScript String 對象常用方法總結(jié)。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考2016-04-04
javascript實現(xiàn)動態(tài)統(tǒng)計圖開發(fā)實例
這篇文章主要介紹了javascript實現(xiàn)動態(tài)統(tǒng)計圖開發(fā)實例,需要的朋友可以參考下2015-11-11
微信小程序 導(dǎo)入圖標(biāo)實現(xiàn)過程詳解
這篇文章主要介紹了微信小程序 導(dǎo)入圖標(biāo)實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-10-10
JavaScript使用高階生成器進行過濾以生成素數(shù)
生成器大家都知道是怎么一回事,但是高階生成器又是什么東西呢,下面小編就來為大家簡單介紹一下如何使用高階生成器進行過濾以生成素數(shù)吧2024-02-02

