学习一种新的数据结构,一般从三方面切入;
第一:数据结构的结构类型
第二:数据结构的定义方法
第三:数据结构的操作方法和属性
—————————————————————————————————————————————————————
传统局限性:
JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。
map结构作用:解决键值只能是字符串的问题
结构类型:
1,类似于对象,也是键值对的集合
2,“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键
object和map对比:Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应
map结构的定义方法:
const m = new Map(array)
注:参数array可选,参数array是类似于的二维数组
const map = new Map([
['name', '张三'],
['title', 'Author']
]);
map的属性:
1,size 属性:返回 Map 结构的成员总数
2,set(key, value) :设置或更新key值 set
方法返回的是当前的Map
对象,因此可以采用链式写法
3,get(key) :读取key
对应的键值,如果找不到key
,返回undefined
4,has(key) :返回布尔值,表示某个键是否在当前 Map 对象之中
5,delete(key): 删除某个键,返回布尔值
6,clear() :清除所有成员,没有返回值
map的遍历方法:
Map 结构原生提供三个遍历器生成函数和一个遍历方法。
keys()
:返回键名的遍历器。values()
:返回键值的遍历器。entries()
:返回所有成员的遍历器。forEach()
:遍历 Map 的所有成员。
————————————————————————————————————————————————————————
知识拓展:
1, Map 结构的默认遍历器接口(Symbol.iterator
属性)
map[Symbol.iterator] === map.entries
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);
2,map的forEach方法可以接收第二个参数
const reporter = {
report: function(key, value) {
console.log("Key: %s, Value: %s", key, value);
}
};
map.forEach(function(value, key, map) {
this.report(key, value);
}, reporter);