Map
Map對象保存鍵值對。任何值(對象或者原始值) 都可以作為一個鍵或一個值。構造函數Map可以接受一個數組作為參數。
Map和Object的區別
•一個Object 的鍵只能是字符串或者 Symbols,但一個Map 的鍵可以是任意值。
•Map中的鍵值是有序的(FIFO 原則),而添加到對象中的鍵則不是。
•Map的鍵值對個數可以從 size 屬性獲取,而 Object 的鍵值對個數只能手動計算。
•Object 都有自己的原型,原型鏈上的鍵名有可能和你自己在對象上的設置的鍵名產生沖突。
1.Map對象的屬性
•size:返回Map對象中所包含的鍵值對個數
1.Map對象的方法
•set(key, val): 向Map中添加新元素
•get(key): 通過鍵值查找特定的數值并返回
•has(key): 判斷Map對象中是否有Key所對應的值,有返回true,否則返回false
•delete(key): 通過鍵值從Map中移除對應的數據
•clear(): 將這個Map中的所有元素刪除
const m1 = new Map([['a', 111], ['b', 222]])console.log(m1) // {"a" => 111, "b" => 222}m1.get('a') // 111const m2 = new Map([['c', 3]])const m3 = new Map(m2)m3.get('c') // 3m3.has('c') // truem3.set('d', 555)m3.get('d') // 5551.遍歷方法
•keys():返回鍵名的遍歷器
•values():返回鍵值的遍歷器
•entries():返回鍵值對的遍歷器
•forEach():使用回調函數遍歷每個成員
const map = new Map([['a', 1], ['b', 2]])for (let key of map.keys()) { console.log(key)}// "a"http:// "b"for (let value of map.values()) { console.log(value)}// 1// 2for (let item of map.entries()) { console.log(item)}// ["a", 1]// ["b", 2]// 或者for (let [key, value] of map.entries()) { console.log(key, value)}// "a" 1// "b" 2// for...of...遍歷map等同于使用map.entries()for (let [key, value] of map) { console.log(key, value)}// "a" 1// "b" 21.map與其他數據結構的互相轉換
•map轉換為數組(使用擴展運算符)
const arr = [[{'a': 1}, 111], ['b': 222]]const myMap = new Map(arr)[...myMap] // map轉數組。 [[{'a': 1}, 111], ['b': 222]]•Map與對象的互換const obj = {}const map = new Map(['a', 111], ['b', 222])for(let [key,value] of map) { obj[key] = value}console.log(obj) // {a:111, b: 222}•JSON字符串要轉換成Map可以先利用JSON.parse()轉換成數組或者對象,然后再轉換即可。
Set
Set對象允許你存儲任何類型的值,無論是原始值或者是對象引用。它類似于數組,但是成員的值都是唯一的,沒有重復的值。
Set 本身是一個構造函數,用來生成Set 數據結構。Set函數可以接受一個數組(或者具有 iterable 接口的其他數據結構)作為參數,用來初始化。
新聞熱點
疑難解答
圖片精選