我刚刚开始使用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概念的库,但是如果可能的话,我会避免使用外部库。
答案 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)
}