一, map 的特点
JavaScript 的对象(Object), 本质上是键值对的集合(Hash 结构), 但是传统上只能用字符串当作键. 这给它的使用带来了很大的限制.
为了解决这个问题, ES6 提供了 Map 数据结构. 它类似于对象, 也是键值对的集合, 但是 "键" 的范围不限于字符串, 各种类型的值 (包括对象) 都可以当作键. 也就是说, Object 结构提供了 "字符串 - 值" 的对应, Map 结构提供了 "值 - 值" 的对应, 是一种更完善的 Hash 结构实现. 如果你需要 "键值对" 的数据结构, Map 比 Object 更合适.
- let m = new Map();
- let myInfo = {name: 'shangyy', age: 18};
- console.log(m.set(myInfo,'person')); // Map { { name: 'shangyy', age: 18 } => 'person' }
- console.log(m.get(myInfo)); // person
- console.log(m.has(myInfo)); // true
- console.log(m.size); // 1
- m.delete(myInfo)
- console.log(m) // Map {}
- let m= new Map([
- ['name', 'shangyy' ],
- ['age', 18],
- ])
- console.log(m) // Map { 'name' => 'shangyy', 'age' => 18 }
- // 实现原理
- let m1 = new Map();
- let lists=[
- ['name', 'shangyy' ],
- ['age', 18],
- ];
- lists.forEach(([key,value]) => {
- m1.set(key,value);
- });
- console.log(m1); // Map { 'name' => 'shangyy', 'age' => 18 }
- let m= new Map();
- console.log(m.set(1,'aaa').set(1,'bbb').get(1)); // bbb
- console.log(m.set([1],'aaa').get([1])); // undefined
来源: http://www.bubuko.com/infodetail-2865355.html