前端實戰總結 JavaScript 數組去重

前端實戰總結 JavaScript 數組去重

一、利用ES6 Set去重(ES6中最常用)

function unique (arr){

return Array.from(new Set(arr))

}

var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined,

null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];

console.log(unique(arr))

//[1, "true", true, 15, false, undefined, null, NaN, "NaN", 0, "a", {}, {}]

不考慮兼容性,這種去重的方法代碼最少。這種方法還無法去掉“{}”空對象,後面的高階方法會添加去掉“{}”空對象。

二、利用for嵌套for,然後splice去重(ES5中最常用)

function unique(arr){

for(var i=0; i

for(var j=i+1;j

if(arr[i]==arr[j]){ //第一個等同於第二個,splice方法刪除第二個

arr.splice(j,1);

j--;

}

}

}

return arr;

}

var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN'NaN', 0, 0, 'a', 'a',{},{}];

console.log(unique(arr))

//[1, "true", 15, false, undefined, NaN, NaN, "NaN", "a", {…}, {…}]

雙層循環,外層循環元素,內層循環時比較值。值相同時,則刪去這個值

三、利用indexOf去重

前端實戰總結 JavaScript 數組去重

新建一個空的結果數組,for 循環原數組,判斷結果數組是否存在當前元素,如果有相同的值則跳過,不相同則push進數組。

四、利用sort()

前端實戰總結 JavaScript 數組去重

利用sort()排序方法,然後根據排序後的結果進行遍歷及相鄰元素比對。

五、利用對象的屬性不能相同的特點進行去重

前端實戰總結 JavaScript 數組去重

六、利用includes

function unique(arr) {

var obj = {};

return arr.filter(function(item, index, arr){

return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)

})

}

利用hasOwnProperty 判斷是否存在對象屬性。

八、利用filter

前端實戰總結 JavaScript 數組去重

九、利用遞歸去重

前端實戰總結 JavaScript 數組去重

十、利用Map數據結構去重

前端實戰總結 JavaScript 數組去重

創建一個空Map數據結構,遍歷需要去重的數組,把數組的每一個元素作為key存到Map中。由於Map中不會出現相同的key值,所以最終得到的就是去重後的結果。

十一、利用reduce

前端實戰總結 JavaScript 數組去重

十二、[...new Set(arr)]

前端實戰總結 JavaScript 數組去重

前端實戰總結 JavaScript 數組去重


分享到:


相關文章: