天天看點

javascript數組去重方法彙總 前言 方法一:es5使用filter方法二:使用es6 Set方法三:使用es6 Map總結

 前言

 數組去重已經是一個老生常談的問題了,依然經久不息,經過歲月的變遷es标準的更新疊代,似乎有越來越多的方法和方式供我們使用,那麼那種方式才是最優的?那種才是最簡潔的?這個我們一起來探讨。

省略:傳統的遞歸方法,這裡我就不說了,是最傳統也是最笨的方法。

方法一:es5使用filter

使用Array.prototype.filter()方法,對元素進行過濾;

相關資料:

Array.prototype.filter()
var array = [2, "2", 2, "2"];
// es5 使用filter
function unique(array) {
    var obj = {};
    return array.filter(function (item, index) {
        var fullItem = (typeof item + item);
        return obj.hasOwnProperty(fullItem) ? false : (obj[fullItem] = true);
    });
}
console.log(unique(array)); //[2,"2"]      

方法二:使用es6 Set

Set裡的元素隻能出現一次,即元素是唯一的。

下面的代碼中也使用了(...)擴充語句,簡單來說就是把數組轉換成n個對象的方法。

相關連結:

Set
var array = [2, "2", 2, "2"];
//es6 使用Set特性(Set元素隻會出現一次,即元素是唯一的)
let unique = (array) => [...new Set(array)]; //(...)擴充語句,簡單來說就是把數組參數轉換為多個對象參數
console.log(unique(array)); //[2,"2"]      

方法三:使用es6 Map

Map也是es6新出的資料類型,方法set、has、get、clear、delete、keys都挺好用的。

Map
var array = [2, "2", 2, "2"];
//es6 Map 本質使用的還是Array.prototype.filter()
function unique(array) {
let m = new Map();
return array.filter((item) => !m.has(item) && m.set(item, 1));
}
console.log(unique(array));      

總結

個人覺得最優的方案是第二種!歡迎補充,歡迎指正~

javascript數組去重方法彙總 前言 方法一:es5使用filter方法二:使用es6 Set方法三:使用es6 Map總結

如果本文對你有所幫助,請打賞——1元就足夠感動我:)

javascript數組去重方法彙總 前言 方法一:es5使用filter方法二:使用es6 Set方法三:使用es6 Map總結
javascript數組去重方法彙總 前言 方法一:es5使用filter方法二:使用es6 Set方法三:使用es6 Map總結

聯系郵箱:[email protected]

我的GitHub:

https://github.com/vipstone

關注公衆号:

javascript數組去重方法彙總 前言 方法一:es5使用filter方法二:使用es6 Set方法三:使用es6 Map總結

作者:

王磊

出處:

http://vipstone.cnblogs.com/

本文版權歸作者和部落格園共有,歡迎轉載,請标明出處。

繼續閱讀