map的結構和屬性方法
阿新 • • 發佈:2018-11-01
學習一種新的資料結構,一般從三方面切入;
第一:資料結構的結構型別
第二:資料結構的定義方法
第三:資料結構的操作方法和屬性
—————————————————————————————————————————————————————
傳統侷限性:
JavaScript 的物件(Object),本質上是鍵值對的集合(Hash 結構),但是傳統上只能用字串當作鍵。這給它的使用帶來了很大的限制。
map結構作用:解決鍵值只能是字串的問題
結構型別:
1,類似於物件,也是鍵值對的集合
2,“鍵”的範圍不限於字串,各種型別的值(包括物件)都可以當作鍵
object和map對比:Object 結構提供了“字串—值”的對應,Map 結構提供了“值—值”的對應
map結構的定義方法:
const m = new Map(array)
注:引數array可選,引數array是類似於的二維陣列
const map = new Map([
['name', '張三'],
['title', 'Author']
]);
map的屬性:
1,size 屬性:返回 Map 結構的成員總數
2,set(key, value) :設定或更新key值 set
方法返回的是當前的Map
物件,因此可以採用鏈式寫法
3,get(key) :讀取key
對應的鍵值,如果找不到key
,返回undefined
4,has(key) :返回布林值,表示某個鍵是否在當前 Map 物件之中
5,delete(key): 刪除某個鍵,返回布林值
6,clear() :清除所有成員,沒有返回值
map的遍歷方法:
Map 結構原生提供三個遍歷器生成函式和一個遍歷方法。
keys()
:返回鍵名的遍歷器。values()
:返回鍵值的遍歷器。entries()
:返回所有成員的遍歷器。forEach()
:遍歷 Map 的所有成員。
————————————————————————————————————————————————————————
知識拓展:
1, Map 結構的預設遍歷器介面(Symbol.iterator
屬性)
map[Symbol.iterator] === map.entries
for (let [key, value] of map.entries()) {
console.log(key, value);
}
// "F" "no"
// "T" "yes"
// 等同於使用map.entries()
for (let [key, value] of map) {
console.log(key, value);
2,map的forEach方法可以接收第二個引數
const reporter = {
report: function(key, value) {
console.log("Key: %s, Value: %s", key, value);
}
};
map.forEach(function(value, key, map) {
this.report(key, value);
}, reporter);