共计 743 个字符,预计需要花费 2 分钟才能阅读完成。
在 JS 的对象(Object)中,本质是就是键值对的集合(HASH)
{
"name":"Kisn",
Brith:941018
}
但是在实际情况使用中,我们不能很好地使用它,它也会导致很多意外。特别是,我想要一个动态的键时.
const data = {};
const element = document.getElementById('myDiv');
data[element] = 'metadata';
data['[object HTMLDivElement]'] // "metadata"
所以我们现在有一个数据结构,它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。
Map
let m = new Map(),
o = {a:1};
m.set(o,'this is a json')
m.got(0) // 'this is a json'
m.has(o) // true
m.delete(o) // true
m.has(o) // false
将对象 o
当做 m
的一个键
-
new Map().get(x)
获取键为x
的值 -
new Map().delete(x)
删除键为x
的键值对 -
new Map().has(x)
判断是否包含x
键值对
但是我在看阮一峰的 md 的时候,看到一些针对自己的问题,不太好理解。我在下面梳理下:
如何 new Map()
我看过阮一峰的文章以后,我自己尝试 new 一个 Map 数据的,但是老是报错:
正确的写法
var m5 = new Map([["asd","name"],
[{no:1,name:'Kisn',age:25},'intro']
])
我的理解是 new Map()
里面是 类数组 []
, 类数组 []
里面才是对象(参数)=> [[object,value],[object1,value2]]
。
参考
ES6-Set&Map
正文完