Javascript ES6类型表示可以反转的键值对象
我有以下JS对象: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中是否有某种数据结构可以为我提供这种开箱即用的功能。不,没有这样的功能-您需要创建一个额外
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我相信它被称为“双向地图”