反转ES6地图

Mik*_*cer 4 javascript arrays reverse dictionary ecmascript-6

假设我创建了一个这样的Map对象Map {"a" => "apple", "b" => "banana"}:

m = new Map([ ["a", "apple"], ["b", "banana"] ]);
Run Code Online (Sandbox Code Playgroud)

现在我想扭转它并获得 Map {"b" => "banana", "a" => "apple"}

我看到唯一的方法如下:

new Map(Array.from(m.entries()).reverse());
Run Code Online (Sandbox Code Playgroud)

这看起来既不简洁也不简单.有更好的方法吗?

Ber*_*rgi 12

您可以放弃.entries()调用,因为它仍然是地图的默认迭代器:

new Map(Array.from(m).reverse())
Run Code Online (Sandbox Code Playgroud)

这对我来说实际上看起来既简洁又直接 - 将地图转换为序列,反转,转换回地图.


Pat*_*rts 9

怎么样new Map([...m].reverse());

let m = new Map([['a', 'apple'], ['b', 'banana']]);
let r = new Map([...m].reverse());

console.log([...m]);
console.log([...r]);
Run Code Online (Sandbox Code Playgroud)

  • @MikhailBatcer [Spread operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator) (2认同)