Set和Map筆記

我的理解:Set相似於一維數組,Map相似於二維數組或者對象數組

相同點

感受僅在於有幾個名稱和功能相同的基礎屬性和方法:code

  • size屬性 返回元素的個數
  • clear 清除全部元素
  • delete 移除指定元素
  • forEach 按序遍歷數據
  • has 判斷是否包含該元素
  • keys/values 按序返回一個可迭代對象,不一樣的是,Set的keys和values方法返回的是同樣的內容,Map的keys方法返回對象中每一個元素的,values方法返回對象中每一個元素的

Set

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是一個鍵名能夠爲任意類型的,鍵值有序的數據對象。
除了鍵名與有序這兩個特徵以外,Map與對象的區別還有get

  • Map有size屬性能夠直接獲取到鍵值對個數
  • Map能夠直接迭代,而對象須要使用keys方法獲取到鍵的數組才能迭代

建立與使用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

相關文章
相關標籤/搜索