如何推送Array的元素并使它们成为Map Key

时间:2019-05-10 20:33:34

标签: javascript algorithm dictionary

我刚刚开始使用Map数据结构,并且我正试图实现与这些答案相反的结果:

How to convert Map keys to array?

实际上,我想实现与此处要求的相同的功能,但提出的建议无效:

确实:

let answers = [1,"2",3];
let myMap = new Map();
myMap.set('0', 'foo');
myMap.set(1, 'bar');
myMap.set({}, 'baz');

myMap.set(answers);

所以我想得到结果:

myMap = ( [1, 'foo'],["2",'bar'],[3,'baz'])

,但是新数组只是“附加”在Map的末尾,就像从 https://jsfiddle.net/CarmineT/5m02exn8/,相反,我想替换每个键(我不介意使用哪个规则),所以我尝试了 通过可迭代的(Map)进行迭代

let k = myMap.keys();

for (let [key, value] of iterable) {
   k.next().value = answers
}

或以更优雅的方式,也许是 forEach ,但首先我想了解我在这里的错误之处,因为它不起作用。

在类似的问题上,答案中确实提到了使用Tree概念的库,但是如果可能的话,我会避免使用外部库。

1 个答案:

答案 0 :(得分:0)

您是否正在寻找类似的东西?

var answers = [1,"2",3];
var myMap = new Map();
myMap.set('0', 'foo');
myMap.set(1, 'bar');
myMap.set({}, 'baz');

var newMap = new Map(); 

Array.from(myMap.keys()).forEach((k, i) => {
  const v = myMap.get(k);
  const nk = answers[i];
  newMap.set(nk, v);
});

// print map
for (let [k, v] of newMap){
  console.log(k, " -> ", v)
}

相关问题