20190727前端笔记Map结构

6次阅读

共计 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

正文完
 0