Javascript ES6类型表示可以反转的键值对象

Javascript ES6类型表示可以反转的键值对象,javascript,data-structures,ecmascript-6,Javascript,Data Structures,Ecmascript 6,我有以下JS对象: var obj={ "j":"jack", "f":"franck", "a":"amy", }; 现在我可以编写obj[val],其中val位于j,f,a中,以访问该键的值。我想知道它们是否是一种数据结构(在ES6中),允许我从值中获取密钥(例如写入obj.inversed()[“jack”]以获取j) 我知道我可以使用下划线或一个简单的函数来实现这一点,但我想知道ES6中是否有某种数据结构可以为我提供这种开箱即用的功能。不,没有这样的功能-您需要创建一个额外

我有以下JS对象:

var obj={
  "j":"jack",
  "f":"franck",
  "a":"amy",
};
现在我可以编写
obj[val]
,其中
val
位于
j,f,a
中,以访问该键的值。我想知道它们是否是一种数据结构(在ES6中),允许我从值中获取密钥(例如写入
obj.inversed()[“jack”]
以获取
j


我知道我可以使用下划线或一个简单的函数来实现这一点,但我想知道ES6中是否有某种数据结构可以为我提供这种开箱即用的功能。

不,没有这样的功能-您需要创建一个额外的映射副本,并反转键和值

如果使用ES6,您当然应该使用适当的
映射
对象,而不是
对象

var myMap = new Map([
  ['j', 'jack'],
  ['f', 'franck'],
  ['a', 'amy']
]);
var inverse = new Map();

for (let [key, value] of myMap.entries()) {
    inverse.set(value, key);
}

不,没有这样的功能-您需要创建一个额外的映射副本,其中的键和值是反向的

如果使用ES6,您当然应该使用适当的
映射
对象,而不是
对象

var myMap = new Map([
  ['j', 'jack'],
  ['f', 'franck'],
  ['a', 'amy']
]);
var inverse = new Map();

for (let [key, value] of myMap.entries()) {
    inverse.set(value, key);
}

好吧,我就是这么想的。你知道有没有其他语言有这样的功能?它是如何命名的?@edi9999我相信它被称为“双向地图”,好吧,我就是这么想的。你知道有没有其他语言有这样的功能?它是如何命名的?@edi9999我相信它被称为“双向地图”