如何在循环(js)中从Map(obj)获取键和值?

时间:2018-08-13 13:28:51

标签: javascript

我尝试循环从映射中获取键和值,在第二次运行中,键和值未定义。有什么想法吗?

let map = new Map();
map.set('{{NAME}}', 'Name');
map.set('{{CLASS}}', 'Sorc');

let keyIterator = map.keys();
let valIterator = map.values();
let counter = map.size;

for (let i = 0; i < counter; i++){
  console.log('Key: ' + keyIterator.next().value);
  console.log('Val: ' + valIterator.next().value);
}

输出:

键:{{NAME}}

Val:姓名

键:未定义

Val:未定义

我希望它不会重复,但是我找不到解决我问题的明确答案。

2 个答案:

答案 0 :(得分:1)

您可以使用for ... of语句来迭代map的条目。

let map = new Map();
map.set('{{NAME}}', 'Name');
map.set('{{CLASS}}', 'Sorc');


for (let [k, v] of map) {
    console.log('Key: ' + k);
    console.log('Val: ' + v);
}

答案 1 :(得分:1)

简单点,只需使用Map对象中的forEach方法即可。

let map = new Map();
map.set('{{NAME}}', 'Name');
map.set('{{CLASS}}', 'Sorc');

map.forEach((val,key) => {
  console.log(`Key: ${key}`)
  console.log(`Val: ${val}`)
})