js數(shù)組去重利用set

簡述

  • 原理:Set對象 + Array.from + 擴(kuò)展運(yùn)算符

具體實現(xiàn):

const nums = [1,2,3,4,3,2,1]

uniq1 = [...new Set(nums)]

uniq2 = Array.from(new Set(nums))

相關(guān)擴(kuò)展:set 和map

set:

定義:新數(shù)據(jù)結(jié)構(gòu)Set,類似于數(shù)組,但成員值不重復(fù)

使用: new Set()

var set = new Set([1,2,3,4,3,2,1]); […set] // [1,2,3,4]

ps:New Set() 接受一個數(shù)組或類數(shù)組對象,在Set內(nèi)部, NAN相等,兩個對象不等,可以用length檢測,可以用for...of遍歷

  • Set有四個操作方法和屬性:

size:返回值的個數(shù)

add(val):添加值,返回set結(jié)構(gòu);

delete(val):刪除值,返回布爾值

has(val):是否包含,返回布爾值

clear():清除所有成員,無返回值

  • 遍歷方法:.keys()、.values()、.entries()、.forEach()

weakset:

與set類似,也是不重復(fù)值的集合

與set的區(qū)別:1.weakset 成員只能是對象,對象都是弱引用,垃圾回收機(jī)制不考慮,不可遍歷

擴(kuò)展Map:

定義:類似于對象,也是鍵值dui的集合,但鍵可以是各種類型(鍵可以為對象),兩個鍵嚴(yán)格相等才為同一個鍵。

  • 使用:new Map()

Var m = new Map(), o = {1:2}

m.set(o, ‘hi’)

m.get(o)

m.has(o) //只有對同一個對象的引用才是同一個鍵

  • Map有幾個方法:

size:返回值的個數(shù)

set(key, val):添加值,返回Map結(jié)構(gòu);

Get(key): 獲取值,返回val

Has(key):是否包含,返回布爾值

Delete(key):刪除值,返回布爾值

Clear():清除所有成員,無返回值

  • 遍歷方法:.keys()、.values()、.entries()、.forEach()

擴(kuò)展:array.from

定義:把淚數(shù)組對象和有iterator接口的對象(Set Map Array)轉(zhuǎn)化為數(shù)組

使用:Array.from(arrayLike[, mapFn[, thisArg]]) 參數(shù):類數(shù)組,處理函數(shù)map,map中的this指向的對象

Array.from([1, 2, 3, 4, 5], (n) => n + 1) // 每個值都加一

  • 轉(zhuǎn)換map:

const map = new Map()

map.set(‘k1’, 1)

map.set(‘k2’, 2)

Const a = Array.from(map); // [[‘k1’,1], [‘k2’, 2]]

  • 轉(zhuǎn)換set

const set1 = new Set()

Set1.add(1).add(2).add(3)

Var a = Array.from(set1) // [1,2,3]

  • 轉(zhuǎn)換string及unicode字符

console.log('%s', Array.from('hello world’)) //["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d"]

console.log('%s', Array.from('\u767d\u8272\u7684\u6d77’)) //["白", "色", "的", "海"]

  • 轉(zhuǎn)換類數(shù)組對象:屬性名必須為數(shù)字,或者可以轉(zhuǎn)換為數(shù)字,必須有l(wèi)ength 不然為空數(shù)組

var a = {0:1, 2:3, 4:5, length: 5};var b = {0:1, 2:3, 4:5, length: 3}

Array.from(a) // [1,undefined,3,undefined,4]

Array.from(b) // [1,undefined,3]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容