Map数据结构

Map数据结构 这种结构与对象非常相似,本质上它们都是键值对集合,但是这种对象结构的数据结构的键只能是字符串类型,

所以说,存放复杂数据结构时会有一些问题。

举例说明:

let obj={}

obj[true]='123'

obj[456]=789

obj['name']='gxj'

obj[{a:1}]='value'

console.log(obj)//{ '456': 789, true: '123', name: 'gxj' }

从语法上面来看,好像是没有问题

但当我们把对象的key值打印出来

console.log(Object.keys(obj));//[ '456', 'true', 'name', '[object Object]' ]

就会发现,如果我们对象的键不是String字符串类型,那内部就会将这个数据toString()的结果作为键

那问题就来了。

假如我们要用对象去存储学生的考试成绩,那如果用学生对象作为键,那不管学生对象的键有什么不同,那每个对象toString()的结果都是一样的,[object Object]

 Map就是解决这个问题的

Map集合“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。

用法:

let m= new Map()

let student= {name:'wangersha',age:29}

m.set(student,90)

console.log(m,m.get(tom))

你可能感兴趣的:(Map数据结构)