javascript当中的Map(二)

89 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第28天,点击查看活动详情

Map实例属性

  • Map.prototype.size size实例属性记录了当前Map实例存储的元素个数。
const map = new Map();

map.set('a',10);
map.set('b',11);
map.set('c',12);
map.set('d',13);
map.set('e',14);
map.set('f',15);

// 输出当前Map实例当中的存储元素个数
console.log(map.size);   // 6

Map实例方法

  • Map.prototype.clear()

移除 Map 对象中所有的键值对。

const map = new Map();

map.set('a',10);
map.set('b',11);
map.set('c',12);
map.set('d',13);
map.set('e',14);
map.set('f',15);

// 未移除之前size数量为6
console.log(map.size);   // 6

map.clear();

// 移除后size数量为0
console.log(map.size);  // 0
  • Map.prototype.delete(key)

移除Map当中的指定键,移除成功返回true,失败返回false。在调用delete之后在调用has()会返回false

const result = map.delete('a');
console.log(result);  // true
// 移除后size数量为5
console.log(map.size);  // 5

console.log(map.has('a'));   // false
  • Map.prototype.get(key) 获取Map对象当中指定的键的值,若不存在对应的值,则返回undefined
console.log(map.get('b'));  // 11
  • Map.prototype.has(key) 判断当前Map对象当中是否存在对于的键
console.log(map.has('b'));  // true
  • Map.prototype.set(key, value) 向当前Map实例当中添加对象
map.set('g',16);

迭代方法

  • Map.prototype@@iterator 返回一个新的迭代对象,其中包含 Map 对象中所有的键,并以插入 Map 对象的顺序排列。
//获取map的迭代器,返回一个新的迭代对象,以键值对的形式返回
const iterator = map[Symbol.iterator]();

for(let item of iterator){
    console.log(item);
}

// [ 'a', 10 ]
// [ 'b', 11 ]
// [ 'c', 12 ]
// [ 'd', 13 ]
// [ 'e', 14 ]
// [ 'f', 15 ]
  • Map.prototype.keys()

keys() 返回一个引用的 Iterator 对象。它包含按照顺序插入 Map 对象中每个元素的 key 值。

//返回当前Map对象当中所有键的一个可迭代对象
console.log(map.keys());  // [Map Iterator] { 'a', 'b', 'c', 'd', 'e', 'f' }
  • Map.prototype.values()

一个新的 Map 可迭代对象。对象包含所有的map实例的值

// 返回当前Map当中的值组成的可迭代对象
console.log(map.values());  // [Map Iterator] { 10, 11, 12, 13, 14, 15 }
  • Map.prototype.entries() entries() 方法返回一个新的包含 [key, value] 对的 Iterator 对象,返回的迭代器的迭代顺序与 Map 对象的插入顺序相同。
console.log(map.entries()); 
// [Map Entries] {
//   [ 'a', 10 ],
//   [ 'b', 11 ],
//   [ 'c', 12 ],
//   [ 'd', 13 ],
//   [ 'e', 14 ],
//   [ 'f', 15 ]
// }
  • Map.prototype.forEach(callbackFn[, thisArg])

forEach() 方法按照插入顺序依次对 Map 中每个键/值对执行一次给定的函数

map.forEach((value,key,map) => {
    console.log(value,key,map);
})

// 10 a
// 11 b
// 12 c
// 13 d
// 14 e
// 15 f