區別:1、set指的是「集合」結構,而Map指的是「字典」結構;2、set是以「[value, value]」的形式儲存元素,而Map是以「[key, value]」的形式儲存;3、Map可用get()透過鍵查找特定值並返回,而set不行。
本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。
簡述:
集合與字典的區別:
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會是這個參數,沒有傳回值。
是一組鍵值對的結構,具有極快的查找速度。
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:
指的是「集合」結構
[value, value],鍵值與鍵名是一致的(或只有鍵值,沒有鍵名)。
Map:
#指的是「字典」結構
# [key, value],鍵值與鍵名是不一致的
【相關推薦:javascript影片教學、web前端】
以上是es6的set和map的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!