當(dāng)前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
javascript数组去重方法汇总
生活随笔
收集整理的這篇文章主要介紹了
javascript数组去重方法汇总
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?前言
?數(shù)組去重已經(jīng)是一個(gè)老生常談的問題了,依然經(jīng)久不息,經(jīng)過歲月的變遷es標(biāo)準(zhǔn)的升級(jí)迭代,似乎有越來越多的方法和方式供我們使用,那么那種方式才是最優(yōu)的?那種才是最簡潔的?這個(gè)我們一起來探討。
省略:傳統(tǒng)的遞歸方法,這里我就不說了,是最傳統(tǒng)也是最笨的方法。
?
方法一:es5使用filter
使用Array.prototype.filter()方法,對元素進(jìn)行過濾;
相關(guān)資料: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里的元素只能出現(xiàn)一次,即元素是唯一的。
下面的代碼中也使用了(...)擴(kuò)展語句,簡單來說就是把數(shù)組轉(zhuǎn)換成n個(gè)對象的方法。
相關(guān)鏈接:Set
var array = [2, "2", 2, "2"]; //es6 使用Set特性(Set元素只會(huì)出現(xiàn)一次,即元素是唯一的) let unique = (array) => [...new Set(array)]; //(...)擴(kuò)展語句,簡單來說就是把數(shù)組參數(shù)轉(zhuǎn)換為多個(gè)對象參數(shù) console.log(unique(array)); //[2,"2"]?
方法三:使用es6 Map
Map也是es6新出的數(shù)據(jù)類型,方法set、has、get、clear、delete、keys都挺好用的。
相關(guān)鏈接:Map
var array = [2, "2", 2, "2"]; //es6 Map 本質(zhì)使用的還是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));?
總結(jié)
個(gè)人覺得最優(yōu)的方案是第二種!歡迎補(bǔ)充,歡迎指正~
?
總結(jié)
以上是生活随笔為你收集整理的javascript数组去重方法汇总的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 「递归算法」看这一篇就够了|多图
- 下一篇: 【数据结构与算法】通俗易懂说链表