Javascript 反转贴图对象

Javascript 反转贴图对象,javascript,typescript,Javascript,Typescript,我想知道,在地图中反转键和值最方便的方法是什么。是否有任何内置方法,或者应该通过迭代键和值来实现 const map: Map<string, number> = new Map() const-map:map=new-map() const逆:映射 假设没有重复的值,您可以这样做: const map: Map<string, number> = new Map(); map.set('3', 3); map.set('4', 4); const inverse:

我想知道,在地图中反转键和值最方便的方法是什么。是否有任何内置方法,或者应该通过迭代键和值来实现

const map: Map<string, number> = new Map()
const-map:map=new-map()
const逆:映射

假设没有重复的值,您可以这样做:

const map: Map<string, number> = new Map();
map.set('3', 3);
map.set('4', 4);

const inverse: Map<number, string> = new Map();
map.forEach((value, key) => inverse.set(value, key));
const-map:map=newmap();
地图集('3',3);
地图集('4',4);
常量逆:Map=newmap();
map.forEach((值,键)=>inverse.set(值,键));

您可以使用
Array将反向元组传递给构造函数。从
Array\reverse

new Map(Array.from(origMap, a => a.reverse()))
请参见在示例上运行它:

const origMap=新地图([[1,“a”],[2,“b”]);
console.log(…origMap);
//反向:
const inv=新映射(Array.from(origMap,a=>a.reverse());

console.log(…inv)
您可以在原始映射上使用spread运算符来获取键值数组对,您可以使用
.map
来交换每一对。最后,将结果转储到
Map
构造函数中,以备复制。任何重复的钥匙都将丢失

const orig=新地图([[“a”,1],“b”,2]);
constcpy=newmap([…orig].Map(e=>e.reverse());
console.log([…orig]);

log([…cpy])
您希望如何处理重复项?@NicholasTower可逆映射应该是一对一的关系,没有任何重复值。
.reduce
也可以工作,并提供更实用的方法。@ShaunLuttin Maps没有
.reduce
方法,我想你的意思是把它转换成一个数组,然后做一个reduce。这是一个非常好的线性函数,我最喜欢它。它也可以是
新映射(array.from(origMap,entry=>[entry[1],entry[0]])
。与原始解决方案不同,TypeScript不会抱怨it@Max你应该把它作为一个单独的答案提交。
new Map(Array.from(origMap, a => a.reverse()))