ES6 Map

Map是ES6提供給咱們的構造函數,本質上是鍵值對的集合。他和對象相似api

特色:key對應value,key和value惟一,任何值均可以當屬性(包括對象)。但在Javascript的Object屬性和值構成的是」字符串-值「對,屬性只能是字符串,若是傳個對象字面量做爲屬性名,那麼會默認把對象轉換成字符串,結果這個屬性名就變成」[object Object]「。ES6提供了」值-值「對的數據結構,鍵名不只能夠是字符串,也能夠是對象。它是一個更完善的Hash結構。數組

建立Map數據結構

1.建立一個空mapapp

let map = new Map();

 

 

 

2.建立map並初始化時map和set不一樣,map只接收數組做爲參數,而且數組成員仍是一個個數組,其中包含兩個元素,一個表明鍵,一個表明值dom

 

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添加值和取值spa

 

map.set('name','zwq');
map.set('age','20');
console.log(map.get(wrapper));  20
console.log(map.get({}));     //undedinde 由於當前的對象不是以前的那個對象了,你須要把對象用變量存一下。

 

 

 

delete() 刪除鍵值對。code

clear() 清空map對象

size()  返回map的長度blog

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]); 拿到屬性名,屬性值
}
相關文章
相關標籤/搜索