1. 程式人生 > >map的結構和屬性方法

map的結構和屬性方法

 

學習一種新的資料結構,一般從三方面切入;

第一:資料結構的結構型別

第二:資料結構的定義方法

第三:資料結構的操作方法和屬性

—————————————————————————————————————————————————————

傳統侷限性:

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);