网站正在建设中...为什么护卫神,备案变更网站,深圳品牌战略定位公司,企业vi设计需求Map 结构原生提供三个遍历器生成函数和一个遍历方法。
Map.prototype.keys()#xff1a;返回键名的遍历器。Map.prototype.values()#xff1a;返回键值的遍历器。Map.prototype.entries()#xff1a;返回所有成员的遍历器。Map.prototype.forEach()#xff1a;遍历 Map 的…Map 结构原生提供三个遍历器生成函数和一个遍历方法。
Map.prototype.keys()返回键名的遍历器。Map.prototype.values()返回键值的遍历器。Map.prototype.entries()返回所有成员的遍历器。Map.prototype.forEach()遍历 Map 的所有成员。
需要特别注意的是Map 的遍历顺序就是插入顺序。
const map new Map([[F, no],[T, yes],
]);for (let key of map.keys()) {console.log(key);
}
// F
// Tfor (let value of map.values()) {console.log(value);
}
// no
// yesfor (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 结构的默认遍历器接口Symbol.iterator属性就是entries方法。
map[Symbol.iterator] map.entries
// trueMap 结构转为数组结构比较快速的方法是使用扩展运算符…。
const map new Map([[1, one],[2, two],[3, three],
]);[...map.keys()]
// [1, 2, 3][...map.values()]
// [one, two, three][...map.entries()]
// [[1,one], [2, two], [3, three]][...map]
// [[1,one], [2, two], [3, three]]结合数组的map方法、filter方法可以实现 Map 的遍历和过滤Map 本身没有map和filter方法。
const map0 new Map().set(1, a).set(2, b).set(3, c);const map1 new Map([...map0].filter(([k, v]) k 3)
);
// 产生 Map 结构 {1 a, 2 b}const map2 new Map([...map0].map(([k, v]) [k * 2, _ v]));
// 产生 Map 结构 {2 _a, 4 _b, 6 _c}此外Map 还有一个forEach方法与数组的forEach方法类似也可以实现遍历。
map.forEach(function(value, key, map) {console.log(Key: %s, Value: %s, key, value);
});forEach方法还可以接受第二个参数用来绑定this。
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);上面代码中forEach方法的回调函数的this就指向reporter。