众所周知,对象中的键名只能是字符串类型。但是在JS在ES6中呢给我们提供了一种新的类型,Map(集合)。
而Map类型的键名可以为number类型,也可以为string类型,也可以为对象,甚至连function都能作为map的键名。
let map = new Map();
map.set('name', 'Joker');
map.set(function () {}, 'Joker');
map.set({}, 'Joker');
map.set(1,'Joker');
console.log(map);
Map类型查找操作:
let map = new Map([[name, "Joker"]]);
console.log(map.get(name)); //Joker
Map类型删除操作:
let map = new Map([[name, "Joker"]]);
console.log(map.delete(name)); //true 这个为删除某一个值
console.log(map.clear()); //undefined 这个为清空所有值
console.log(map) //Map(0) {}
Map类型查找某个元素是否存在:
console.log(map.has(name)); //true 返回值为true即查找成功,false即查找失败
获取Map类型的所有键:
.keys()为获取键,.values()为获取值,.entries()为获取键值对
let map = new Map([["name", "Joker"], ["title", "author"]]);
console.log(map.keys()); //MapIterator {"name", "title"}
console.log(map.values()); //MapIterator {"Joker", "author"}
console.log(map.entries()); //MapIterator {"name" => "Joker", "title" => "author"}
Map类型的遍历:
let map = new Map([["name", "Joker"], ["title", "author"]]);
for (const [key, value] of map.entries()) {
console.log(key, value)
}