溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

es6的set和map的區(qū)別有哪些

發(fā)布時(shí)間:2022-04-16 10:17:20 來(lái)源:億速云 閱讀:549 作者:iii 欄目:web開發(fā)

今天小編給大家分享一下es6的set和map的區(qū)別有哪些的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。

區(qū)別:1、set指的是“集合”結(jié)構(gòu),而Map指的是“字典”結(jié)構(gòu);2、set是以“[value, value]”的形式儲(chǔ)存元素,而Map是以“[key, value]”的形式儲(chǔ)存;3、Map可用get()通過(guò)鍵查找特定值并返回,而set不行。

本教程操作環(huán)境:windows7系統(tǒng)、ECMAScript 6版、Dell G3電腦。

簡(jiǎn)述:

  • Set 和 Map 主要的應(yīng)用場(chǎng)景在于 數(shù)據(jù)重組 和 數(shù)據(jù)儲(chǔ)存。

  • Set 是一種叫做集合的數(shù)據(jù)結(jié)構(gòu),Map 是一種叫做字典的數(shù)據(jù)結(jié)構(gòu)。

集合 與 字典 的區(qū)別:

  • 共同點(diǎn):集合、字典 可以儲(chǔ)存不重復(fù)的值

  • 不同點(diǎn):集合 是以 [value, value]的形式儲(chǔ)存元素,字典 是以 [key, value] 的形式儲(chǔ)存

集合(Set)

ES6 新增的一種新的數(shù)據(jù)結(jié)構(gòu),類似于數(shù)組,但成員是唯一且無(wú)序的,沒有重復(fù)的值。

Set 本身是一種構(gòu)造函數(shù),用來(lái)生成 Set 數(shù)據(jù)結(jié)構(gòu)。

Set 對(duì)象允許你儲(chǔ)存任何類型的唯一值,無(wú)論是原始值或者是對(duì)象引用。

const s = new Set()
[1, 2, 3, 4, 3, 2, 1].forEach(x => s.add(x))
for (let i of s) {
    console.log(i)	// 1 2 3 4
}
// 去重?cái)?shù)組的重復(fù)對(duì)象
let arr = [1, 2, 3, 2, 1, 1]
[... new Set(arr)]	// [1, 2, 3]

注意:向 Set 加入值的時(shí)候,不會(huì)發(fā)生類型轉(zhuǎn)換,所以`5`和`"5"`是兩個(gè)不同的值。Set 內(nèi)部判斷兩個(gè)值是否不同,使用的算法叫做“Same-value-zero equality”,它類似于**精確相等**運(yùn)算符(`===`),主要的區(qū)別是**`NaN`等于自身,而精確相等運(yùn)算符認(rèn)為`NaN`不等于自身。**

let set = new Set();
let a = NaN;
let b = NaN;
set.add(a);
set.add(b);
set // Set {NaN}

let set1 = new Set()
set1.add(5)
set1.add('5')
console.log([...set1])	// [5, "5"]

操作方法:

  • add(value):新增,相當(dāng)于 array里的push。

  • delete(value):存在即刪除集合中value。

  • has(value):判斷集合中是否存在 value。

  • clear():清空集合。

遍歷方法:遍歷方法(遍歷順序?yàn)椴迦腠樞颍?/p>

  • keys():返回一個(gè)包含集合中所有鍵的迭代器。

  • values():返回一個(gè)包含集合中所有值得迭代器。

  • entries():返回一個(gè)包含Set對(duì)象中所有元素得鍵值對(duì)迭代器。

  • forEach(callbackFn, thisArg):用于對(duì)集合成員執(zhí)行callbackFn操作,如果提供了 thisArg 參數(shù),回調(diào)中的this會(huì)是這個(gè)參數(shù),沒有返回值。

字典(Map):

是一組鍵值對(duì)的結(jié)構(gòu),具有極快的查找速度。

const m = new Map()
const o = {p: 'haha'}
m.set(o, 'content')
m.get(o)	// content

m.has(o)	// true
m.delete(o)	// true
m.has(o)	// false

操作方法:

  • set(key, value):向字典中添加新元素。

  • get(key):通過(guò)鍵查找特定的數(shù)值并返回。

  • has(key):判斷字典中是否存在鍵key。

  • delete(key):通過(guò)鍵 key 從字典中移除對(duì)應(yīng)的數(shù)據(jù)。

  • clear():將這個(gè)字典中的所有元素刪除。

遍歷方法:

  • Keys():將字典中包含的所有鍵名以迭代器形式返回。

  • values():將字典中包含的所有數(shù)值以迭代器形式返回。

  • entries():返回所有成員的迭代器。

  • forEach():遍歷字典的所有成員。

以上就是“es6的set和map的區(qū)別有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI