es6-認識Map

Map 對象保存鍵值對。任何值(對象或者原始值) 都可以作爲一個鍵或一個值。

Map.prototype.get(key)

返回鍵對應的值,如果不存在,則返回undefined。

Map.prototype.set(key, value)

設置Map對象中鍵的值。返回該Map對象。

let map = new Map();

map.set('title', 'ECMA 2019');
map.set('year', 2019);

console.log(map.get('title')); // ECMA 2019
console.log(map.get('year')); // 2019

 

let map = new Map();
let key1 = {},
  key2 = {};

map.set(key1, 4).set(key2, 34);

console.log(map); // Map { {} => 4, {} => 34 }
console.log(map.get(key1)); // 4

可以向 Map 構造函數傳一個數組來初始化。數組的子元素是包含鍵和值兩個元素的數組:

let map = new Map([['name', 'wozien'], ['age', 25]]);
console.log(map); // Map { 'name' => 'wozien', 'age' => 25 }

 

Map.prototype.size

返回Map對象的鍵/值對的數量。

Map.prototype.clear()

移除Map對象的所有鍵/值對 。

Map.prototype.delete(key)

如果 Map 對象中存在該元素,則移除它並返回 true;否則如果該元素不存在則返回 false

Map.prototype.has(key)

返回一個布爾值,表示Map實例是否包含鍵對應的值。

let map = new Map();
map.set('name', 'wozien');
map.set('age', 25);

console.log(map.size); // 2
console.log(map.has('name')); // true

map.delete('name');
console.log(map.has('name'));  // false

map.clear();
console.log(map.size);  // 0

Map.prototype.entries()

返回一個新的 Iterator 對象,它按插入順序包含了Map對象中每個元素的 [key, value] 數組

Map.prototype.forEach(callbackFn[, thisArg])

按插入順序,爲 Map對象裏的每一鍵值對調用一次callbackFn函數。如果爲forEach提供了thisArg,它將在每次回調中作爲this值。

myMap.forEach(function(value, key) {
  console.log(key + " = " + value);
})
// 將會顯示兩個logs。 一個是 "0 = zero" 另一個是 "1 = one"

Map.prototype.keys()

返回一個新的 Iterator對象, 它按插入順序包含了Map對象中每個元素的鍵 

Map.prototype.values()

返回一個新的Iterator對象,它按插入順序包含了Map對象中每個元素的 。

Map.prototype[@@iterator]()

返回一個新的Iterator對象,它按插入順序包含了Map對象中每個元素的 [key, value] 數組

 

Map可以使用for..of循環來實現迭代

var myMap = new Map();
myMap.set(0, "zero");
myMap.set(1, "one");
for (var [key, value] of myMap) {
  console.log(key + " = " + value);
}
// 將會顯示兩個log。一個是"0 = zero"另一個是"1 = one"

for (var key of myMap.keys()) {
  console.log(key);
}
// 將會顯示兩個log。 一個是 "0" 另一個是 "1"

for (var value of myMap.values()) {
  console.log(value);
}
// 將會顯示兩個log。 一個是 "zero" 另一個是 "one"

for (var [key, value] of myMap.entries()) {
  console.log(key + " = " + value);
}
// 將會顯示兩個log。 一個是 "0 = zero" 另一個是 "1 = one"

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章