Map遍历对于任何一门语言来说都是入门级的东西,太小儿科了。但ts有坑还是说一下。
有一个map
let map= new Map<string, string>();
map.set("a1","1");
最简单的遍历方式
map.forEach((value , key) =>{
....
});
这些需要注意的是参数顺序,value在前,key在后。
复杂的方式
let iterator = map.values();
let r: IteratorResult<string>;
while (r = iterator.next() , !r.done) {
console.log(r.value);
}
使用for of 遍历
for(let i of map.values()){
console.log(i);
}
这个也非常好!但是,target=es6才行。es6毕竟太新,很多时候都是target=ts5,这个方法就用不了了!
提示
Type 'IterableIterator<string>' is not an array type.
因为target=ts5时,不支持遍历IterableIterator,太惨了。
for in 掉入坑
for (let i in map.values()) {
console.log(i);
}
这个编译器不会报错,但是根本不会进入循环!
将map的value(key)转成数组
有个很简单的方法
Array.from
let a = Array.from(departmentMap.values());
扩展表达式也很简单,但是es6才可以使用。
let a = [...departmentMap.values()];
网友评论