用枚举编写JSON键

Fal*_*per 4 javascript json

我试图使用枚举来提取字符串,例如:

var INGREDIENT = { COFFEE: "coffee"}
Run Code Online (Sandbox Code Playgroud)

然后想要成分的成本比例

var COST = { coffee: 1 }
Run Code Online (Sandbox Code Playgroud)

但我想提取咖啡使用字符串:INGREDIENT.COFFEE如下:

var COST = {INGREDIENT.COFFEE: 1 };  //target
Run Code Online (Sandbox Code Playgroud)

但它显示的错误.不正确.

我正在诉诸:

var COST= {};
COST[INGREDIENT.COFFEE] = 1;
Run Code Online (Sandbox Code Playgroud)

我正在做什么,阻止我像我一样做 //target

Poi*_*nty 6

在ES2015中你可以写

var COST = { [INGREDIENT.COFFEE]: 1 };
Run Code Online (Sandbox Code Playgroud)

然而,旧版本的JavaScript(仍然非常常用)并不允许这样做,唯一的选择是通过[]符号使用单独的赋值,如在OP中:

var COST= {};
COST[INGREDIENT.COFFEE] = 1;
Run Code Online (Sandbox Code Playgroud)

如果你不喜欢它是两个表达式,你总是可以利用函数的魔力:

var COST = function() {
  var value = {};
  value[INGREDIENT.COFFEE] = 1;
  return value;
}();
Run Code Online (Sandbox Code Playgroud)

当然这很丑陋,但是如果你真的需要将一些对象构建代码压缩到一些你只能传递表达式的上下文中,那就太好了.