我的理解:Set相似於一維數組,Map相似於二維數組或者對象數組
感受僅在於有幾個名稱和功能相同的基礎屬性和方法:code
Set是存儲了一組有序且值惟一數據的對象
建立及使用對象
let set = new Set() set.add(1) set.add('test') set.add({a:1}) console.log(set) // {1, "test", {…}}
迭代ip
for (let item of set) console.log(item); // 按順序輸出:1, "test", {a:1} for (let item of set.keys()) console.log(item); // 按順序輸出:1, "test", {a:1} for (let item of set.values()) console.log(item); // 按順序輸出:1, "test", {a:1} for (let [key, value] of set.entries()) console.log(key,value); //(鍵與值相等) 按順序輸出1 1, "test" "test", {a:1} {a:1}
Map是一個鍵名能夠爲任意類型的,鍵值有序的數據對象。
除了鍵名與有序這兩個特徵以外,Map與對象的區別還有get
建立與使用it
let map = new Map() let obj = {a:1} let func = function(){} map.set(1,'value1') map.set(obj,'obj') map.set(func,'function') console.log(map) // {1 => "value1", {…} => "obj", ƒ => "function"} map.get(obj) // 'obj' map.get(func) // 'function'
迭代方式與Set一致io
參考資料:
1.https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set
2.https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Mapconsole