js中的Map
- Map是es6的新增特性,Map是一种新的集合类型,为这门语言带来了真正的键/值存储机制,Map的大多数特性都是通过Obect实现的
基本api
const m = new Map();
const m1 = new Map([
["key1", "val1"],
["key2", "val2"],
["key3", "val3"]
]);
console.log(m1.size);
const m3 = new Map([
[]
]);
console.log(m3.has(undefined));
console.log(m3.get(undefined));
console.log(m.has("firstName"));
console.log(m.get("firstName"));
console.log(m.size)
m.set("firstName", "Matt")
.set("lastName", "Frisbie");
console.log(m.has("firstName"));
console.log(m.get("firstName"));
console.log(m.size)
m.delete("firstName");
console.log(m.has("firstName"));
console.log(m.get("firstName"));
console.log(m.size)
m.clear()
console.log(m.has("firstName"));
console.log(m.get("firstName"));
console.log(m.size)
选择Object还是Map
- 内存占用:Object和Map的工程级实现在不同浏览器间存在明显差异,但存储单个键/值对所占用的内存数量都会随键的数量线性增加
- 插入性能:向Object和Map中插入新键/值对的消耗大致相当,不管插入Map在所有浏览器中一般会稍微快一点。
- 查找速度:与插入不同,从大型Object和Map中查找键/值对的性能差异极小,但如果只包含少量键/值对,则Object较快。
- 删除性能:使用delete删除Object属性的性能一直以来饱受诟病,目前在很多浏览器中仍然如此。