站長資訊網
最全最豐富的資訊網站

es6的set和map的區別是什么

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

es6的set和map的區別是什么

本教程操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。

簡述:

  • Set 和 Map 主要的應用場景在于 數據重組 和 數據儲存。
  • Set 是一種叫做集合的數據結構,Map 是一種叫做字典的數據結構。

集合 與 字典 的區別:

  • 共同點:集合、字典 可以儲存不重復的值
  • 不同點:集合 是以 [value, value]的形式儲存元素,字典 是以 [key, value] 的形式儲存

集合(Set)

ES6 新增的一種新的數據結構,類似于數組,但成員是唯一且無序的,沒有重復的值。

Set 本身是一種構造函數,用來生成 Set 數據結構。

Set 對象允許你儲存任何類型的唯一值,無論是原始值或者是對象引用。

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 } // 去重數組的重復對象 let arr = [1, 2, 3, 2, 1, 1] [... new Set(arr)]	// [1, 2, 3]

注意:向 Set 加入值的時候,不會發生類型轉換,所以`5`和`"5"`是兩個不同的值。Set 內部判斷兩個值是否不同,使用的算法叫做“Same-value-zero equality”,它類似于**精確相等**運算符(`===`),主要的區別是**`NaN`等于自身,而精確相等運算符認為`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):新增,相當于 array里的push。

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

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

  • clear():清空集合。

遍歷方法:遍歷方法(遍歷順序為插入順序)

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

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

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

  • forEach(callbackFn, thisArg):用于對集合成員執行callbackFn操作,如果提供了 thisArg 參數,回調中的this會是這個參數,沒有返回值。

字典(Map):

是一組鍵值對的結構,具有極快的查找速度。

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):通過鍵查找特定的數值并返回。
  • has(key):判斷字典中是否存在鍵key。
  • delete(key):通過鍵 key 從字典中移除對應的數據。
  • clear():將這個字典中的所有元素刪除。

遍歷方法:

  • Keys():將字典中包含的所有鍵名以迭代器形式返回。
  • values():將字典中包含的所有數值以迭代器形式返回。
  • entries():返回所有成員的迭代器。
  • forEach():遍歷字典的所有成員。

總結**:**

Set:

  • 指的是“集合”結構

  • [value, value],鍵值與鍵名是一致的(或者說只有鍵值,沒有鍵名)。

  • 不能通過鍵查找特定值

Map:

  • 指的是“字典”結構

  • [key, value],鍵值與鍵名是不一致的

  • Map可用get()通過鍵查找特定值并返回

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
久久只有这才是精品99| 中文字幕精品无码亚洲字| 国产成人精品一区二区A片带套| 一区二区三区精品| 国产亚洲精品a在线无码| 久久国产精品免费| 亚洲精品国产精品乱码不卞| 亚洲AV日韩综合一区尤物| 杨幂精品国产专区91在线| 亚洲国产精品无码久久| 精品久久久久久婷婷| 69国产精品视频免费| 久久精品国产亚洲AV无码娇色| 久久se精品一区二区国产| 国产精品拍天天在线| 日韩精品一区二区三区四区| 精品亚洲综合在线第一区| 亚洲欧洲精品无码AV| 国产偷国产偷精品高清尤物| 国内精品久久久久久中文字幕| 久久国产美女免费观看精品| jizzjizz国产精品久久| 一本久久伊人热热精品中文| 日韩午夜免费视频| 日韩资源在线观看| 欧洲精品码一区二区三区免费看 | 亚洲äv永久无码精品天堂久久 | 中文字幕乱码中文乱码51精品| 国产午夜精品一区二区三区小说| 国产精品成人69XXX免费视频| 亚洲国产婷婷综合在线精品| 国产AⅤ精品一区二区三区久久| 亚洲国产精品自产在线播放| 亚洲欧洲久久久精品| 久久狠狠一本精品综合网| 精品人妻一区二区三区毛片| 精品水蜜桃久久久久久久| 久久精品国产只有精品66| 91精品国产福利尤物| 日韩A∨精品日韩在线观看| 亚洲精品无码不卡在线播HE|