ES6 类型来表示一个可以反转的键值对象
ES6 Type to represent a key-value object that can be inverted
我有以下 JS 对象:
var obj={
"j":"jack",
"f":"franck",
"a":"amy",
};
现在我可以编写 obj[val]
,其中 val
在 j,f,a
中以访问该键的值。我想知道它们是否是允许我从值中获取键的数据结构(在 ES6 中)(例如,写 obj.inverted()["jack"]
以获得 j
)。
我知道我可以通过使用 underscore
或一个简单的函数来做到这一点,但我想知道它们是否是 ES6 中的某种数据结构,可以给我这个 feature开箱即用。
不,没有这样的功能 - 您需要创建一个额外的键值对映射副本。
如果使用 ES6,当然应该使用适当的 Map
对象而不是 Object
:
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);
}
我有以下 JS 对象:
var obj={
"j":"jack",
"f":"franck",
"a":"amy",
};
现在我可以编写 obj[val]
,其中 val
在 j,f,a
中以访问该键的值。我想知道它们是否是允许我从值中获取键的数据结构(在 ES6 中)(例如,写 obj.inverted()["jack"]
以获得 j
)。
我知道我可以通过使用 underscore
或一个简单的函数来做到这一点,但我想知道它们是否是 ES6 中的某种数据结构,可以给我这个 feature开箱即用。
不,没有这样的功能 - 您需要创建一个额外的键值对映射副本。
如果使用 ES6,当然应该使用适当的 Map
对象而不是 Object
:
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);
}