Map是ES6提供給我們的建構式,本質上是鍵值對的集合,他和物件類似
特點:key對應value,key和value唯一,任何值都可以當屬性(包括物件),但在Javascript的Object屬性和值構成的是”字串-值“對,屬性只能是字串,如果傳個物件字面量作為屬性名,那么會默認把物件轉換成字串,結果這個屬性名就變成”[object Object]“,ES6提供了”值-值“對的資料結構,鍵名不僅可以是字串,也可以是物件,它是一個更完善的Hash結構,
創建Map
1.創建一個空map
let map = new Map();
2.創建map并初始化時map和set不同,map只接收陣列作為引數,并且陣列成員還是一個個陣列,其中包含兩個元素,一個代表鍵,一個代表值
let map = new Map([["name","zwq"],['age','18'],['sex',true],[{},'物件也可以是屬性名']]);
console.log(map);//Map(4) {"name" => "zwq", "age" => "18", "sex" => true, {…} => "物件也可以作為屬性名"}
例如當你想把dom物件最為屬性名時,在Object里作為屬性名是會被toString的{[object HTMLDivElement]: 20},這是你就可以使用map會這樣存下div.wrapper => "20"}
使用api添加值和取值
map.set('name','zwq');
map.set('age','20');
console.log(map.get(wrapper)); 20
console.log(map.get({})); //undedinde 因為當前的物件不是之前的那個物件了,你需要把物件用變數存一下,
delete() 洗掉鍵值對,
clear() 清空map
size() 回傳map的長度
keys() 回傳所有的屬性名
has('屬性名') 看map里面有沒有屬性 回傳true,false
遍歷map
方法一
map.forEach(function(ele,key,self){ console.log(ele,key,self); //true "sex" Map(1) {"sex" => true} })
方法二 for(var prop of map){ console.log(prop); //回傳把鍵值對變成陣列 ["name", "zwq"] ["age", "20"]
console.log(prop[0],prop[1]); 拿到屬性名,屬性值
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/170404.html
標籤:JavaScript
上一篇:SVG撐滿頁面
