ES6 Map


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]); 拿到屬性名,屬性值
}

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM