Map
类型是键值对的有序列表,而键和值都可以是任意类型Map
本身是一个构造函数,用来生成Map
数据结构
const m = new Map()
增删改查
Map
结构的实例针对增删改查有以下属性和操作方法:
size
属性set()
get()
has()
delete()
clear()
size
size
属性返回 Map 结构的成员总数。 ```javascript const map = new Map(); map.set(‘foo’, true); map.set(‘bar’, false);
map.size // 2
<a name="ecI6H"></a>
### set()
设置键名key对应的键值为value,然后返回整个 Map 结构<br />如果key已经有值,则键值会被更新,否则就新生成该键<br />同时返回的是当前Map对象,可采用链式写法
```javascript
const m = new Map();
m.set('edition', 6) // 键是字符串
m.set(262, 'standard') // 键是数值
m.set(undefined, 'nah') // 键是 undefined
m.set(1, 'a').set(2, 'b').set(3, 'c') // 链式操作
get()
get
方法读取key
对应的键值,如果找不到返回undefined
const m = new Map();
m.set('a',1)
m.get('a') // 1
has()
has
方法返回一个布尔值,表示某个键是否在当前 Map
对象之中
const m = new Map();
m.set('edition', 6);
m.set(262, 'standard');
m.set(undefined, 'nah');
m.has('edition') // true
m.has('years') // false
m.has(262) // true
m.has(undefined) // true
delete()
delete
方法删除某个键,返回true
。如果删除失败,返回false
const m = new Map();
m.set(undefined, 'nah');
m.has(undefined) // true
m.delete(undefined)
m.has(undefined) // false
clear()
clear
方法清除所有成员,没有返回值
let map = new Map();
map.set('foo', true);
map.set('bar', false);
map.size // 2
map.clear()
map.size // 0
遍历
Map
结构原生提供三个遍历器生成函数和一个遍历方法:
keys()
:返回键名的遍历器values()
:返回键值的遍历器entries()
:返回所有成员的遍历器forEach()
:遍历 Map 的所有成员 ```javascript const map = new Map([ [‘F’, ‘no’], [‘T’, ‘yes’], ]);
for (let key of map.keys()) { console.log(key); } // “F” // “T”
for (let value of map.values()) { console.log(value); } // “no” // “yes”
for (let item of map.entries()) { console.log(item[0], item[1]); } // “F” “no” // “T” “yes”
// 或者 for (let [key, value] of map.entries()) { console.log(key, value); } // “F” “no” // “T” “yes”
// 等同于使用map.entries() for (let [key, value] of map) { console.log(key, value); } // “F” “no” // “T” “yes”
map.forEach(function(value, key, map) { console.log(“Key: %s, Value: %s”, key, value); }); ```