saa*_*adq 10 javascript dictionary ecmascript-6
我正在阅读这个for.. of在Map上使用循环的例子,我对这种语法有点困惑:
var myMap = new Map();
myMap.set(0, "zero");
myMap.set(1, "one");
for (var [key, value] of myMap) {
console.log(key + " = " + value);
}
Run Code Online (Sandbox Code Playgroud)
具体来说,我不明白正在发生的数组解构.我知道你可以使用数组解构来做类似的事情let [one, two] = [1, 2];,但是这个例子中发生了什么?myMap这不是一个数组,为什么这会得到正确的值?
我的另一个问题是为什么是key, value解构中的订单,但是当你执行forEach()订单时value, key,就像这里:
myMap.forEach((value, key) => {
console.log(key + " = " + value);
});
Run Code Online (Sandbox Code Playgroud)
Ry-*_*Ry- 24
for (var [key, value] of myMap) {
console.log(key + " = " + value);
}
Run Code Online (Sandbox Code Playgroud)
就好像
for (let pair of myMap) {
var [key, value] = pair;
console.log(key + " = " + value);
}
Run Code Online (Sandbox Code Playgroud)
所以它不一定myMap是一个解构工作的阵列; 相反,它的每个元素在迭代时必须是一个数组,迭代映射确实产生数组(键/值对).
Map#forEach的参数顺序可能与for一致Array#forEach,它使用参数调用函数(item, index); 反过来,它可能会这样做,因为你并不总是需要索引.
稍微偏离主题,但顺便说一句:
myMap.forEach((v,k) => {});
Run Code Online (Sandbox Code Playgroud)
比性能高出约 50%
for (var [key, value] of myMap) {
}
Run Code Online (Sandbox Code Playgroud)
所以也许可以考虑使用Map.prototype.forEach(不要与 混淆Array.prototype.forEach)。
| 归档时间: |
|
| 查看次数: |
10033 次 |
| 最近记录: |