使用枚举值作为Javascript中另一个枚举的键

时间:2014-01-25 05:17:33

标签: javascript map enums hashmap

我有一个枚举:

var a = {X: 0, Y: 1};

并且,我想从第一个的值创建另一个枚举。像这样:

var b = {a.X: "foo", a.Y: "bar"};

这样做会给我一个SyntaxError: Unexpected token .

我有没有办法在javascript中使用一个枚举的值作为另一个的键?

仅供参考:我意识到我可以做这样的事情来实现我想要的目标

var b = {};
b[a.X] = "foo";
b[a.Y] = "bar";

但是,从可读性的角度来看,我更愿意是否有某种方式可以用以前的方式来做。

2 个答案:

答案 0 :(得分:18)

我只是在寻找其他东西的时候遇到过这个......

现在可以使用ES6语法

执行此操作
var b = {
    [a.X]: "foo", 
    [a.Y]: "bar"
};

答案 1 :(得分:3)

不,你必须采取第二种方式。

要了解其原因,请考虑以下代码:

var foo = 'bar';

var object = {
  foo: 'baz'
};

在对象文字中,{{1>}存储在变量 foo字符串 foo中的值是什么?

根据语言规则,它是后者。因此,对象表达式的键不能是复杂的表达式本身。

就可读性而言,最接近的可能就是沿着这些方向写一个帮助者:

"foo"