ES6特性:Map数据结构

Javascript的对象,本质上是键值对的集合,但是传统上只能用字符串当作键。

ES6提供了Map数据结构,它类似于对象,也是键值对的集合,但是"键"的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

let m=new Map();
let o={p:'key'};
m.set(o,'aaa');
m.get(o);    // 'aaa'

作为构造函数,Map也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组

let map=new Map([
    ['name','张三'],
    ['age',18]
])
map.size    // 2

Map的属性和方法

(1)size属性:返回Map结构的成员总数

(2)set(key,value):设置键值,返回Map结构

let m=new Map();
m.set('key1',1);
m.set(111,'aa');
m    // {'key1'=>1,111=>'aa'}

如果key已经有值,则键值会被更新,否则生成新键。返回的是当前Map对象,可采用链式写法

(3)get(key):读取key对应的键值,如果找不到key值,返回undefined

let m=new Map();
m.set('a',1).set('b',2);
m.get('b')    // 2

(4)has(key):返回布尔值,判断某个key是否在当前Map对象中

let m=new Map();
m.set('a',1).set('b',2);
m.has('b')     // true

(5)delete(key):删除某个key,返回true;如果删除失败,返回false

let m=new Map();
m.set('a',1).set('b',2);
m.delete('b')    // true
m.delete(a)    // false

(6)clear:清楚所有成员,没有返回值

let m=new Map();
m.set('a',1).set('b',2);
console.log(m);    // {'a'=>1,'b'=>2}
m.clear();
console.log(m);    // {}

遍历方法

Map 结构原生提供三个遍历器生成函数和一个遍历方法。

(1)keys():返回键名的遍历器

(2)values():返回键值的遍历器

(3)entries():返回所有成员的遍历器

(4)forEach():遍历Map的所有成员

let m=new Map([
    ['a',1],
    ['b',2]
]);
m.keys();    // {'a','b'}
m.values();    // {1,2}
m.entries();    // {'a'=>1,'b'=>2}
for(let [key,value] of m){
    console.log(key,value)
}
// a 1
// b 2

Map结构转为数组结构,快速的方法是使用扩展运算符

let m=new Map();
m.set('a',1).set('b',2);
let arr=[...m.keys()];    // ['a','b']
[...m.values()]    // [1,2]
[...m.entries()]    // [['a',1],['b',2]]
[...m]    // [['a',1],['b',2]]

同时,数组的map方法、filter方法也可用于Map的遍历和过滤

猜你喜欢

转载自blog.csdn.net/qq_41049816/article/details/88566407