如何在没有 forEach 的情况下迭代 Javascript Map?
How to iterate Javascsript Map without forEach?
如何在没有 forEach
的情况下迭代 javascript Map
(所以我可以 break
在中间,或者有没有办法从 break
forEach
? 无法使用对象,因为顺序有时在某些浏览器上是随机的,其中 Map
顺序已定义。
let map = new Map();
map.set(1,'google.com');
// very long list
map.set(12312,/[^a-z]+/);
let match = 'nothing';
for(let z in map) { // doesn't work, but works for object
if( foo.match(z) ) {
match = map.get(z); // map[z]; on object
break;
}
}
我找到的最接近的东西是使用 .keys()
let iter = map.keys();
while(!iter.next().done) {
if(foo.match(iter.value)) {
match = map.get(iter.value);
break
}
}
他们的条目,以 [key, value]
数组的形式提供。这是地图的默认迭代器,也可通过 entries()
方法获得。
他们的钥匙:keys()
.
他们的值:values()
.
这是一个遍历条目的示例,将它们解构为 key
和 value
常量:
for (const [key, value] of map) {
// `key` is the key of the entry, `value` is the value
if (/*...some condition...*/) {
break;
}
}
(你没有解构,不过,你可以使用for (const entry of map)
然后使用entry[0]
作为密钥和 entry[1]
作为值。)
或循环键:
for (const key of map.keys()) {
// ...
或循环值:
for (const value of map.values()) {
// ...
将默认迭代器应用于您的示例代码:
let map = new Map();
map.set(1,'google.com');
// very long list
map.set(12312,/[^a-z]+/);
let match = 'nothing';
for (const [key, value] of map) {
if (foo.match(key)) {
match = value;
break;
}
}
如何在没有 forEach
的情况下迭代 javascript Map
(所以我可以 break
在中间,或者有没有办法从 break
forEach
? 无法使用对象,因为顺序有时在某些浏览器上是随机的,其中 Map
顺序已定义。
let map = new Map();
map.set(1,'google.com');
// very long list
map.set(12312,/[^a-z]+/);
let match = 'nothing';
for(let z in map) { // doesn't work, but works for object
if( foo.match(z) ) {
match = map.get(z); // map[z]; on object
break;
}
}
我找到的最接近的东西是使用 .keys()
let iter = map.keys();
while(!iter.next().done) {
if(foo.match(iter.value)) {
match = map.get(iter.value);
break
}
}
他们的条目,以
[key, value]
数组的形式提供。这是地图的默认迭代器,也可通过entries()
方法获得。他们的钥匙:
keys()
.他们的值:
values()
.
这是一个遍历条目的示例,将它们解构为 key
和 value
常量:
for (const [key, value] of map) {
// `key` is the key of the entry, `value` is the value
if (/*...some condition...*/) {
break;
}
}
(你没有解构,不过,你可以使用for (const entry of map)
然后使用entry[0]
作为密钥和 entry[1]
作为值。)
或循环键:
for (const key of map.keys()) {
// ...
或循环值:
for (const value of map.values()) {
// ...
将默认迭代器应用于您的示例代码:
let map = new Map();
map.set(1,'google.com');
// very long list
map.set(12312,/[^a-z]+/);
let match = 'nothing';
for (const [key, value] of map) {
if (foo.match(key)) {
match = value;
break;
}
}