javascript - 对象键中的点

标签 javascript

这可能已经被问过,但我找不到任何线程。

我有一个带有常量的对象,我想将其用作对象列表中的键:

//CONSTANTS.Foo === 1
//CONSTANTS.Bar === 2
var list = [{ CONSTANTS.Foo: 'foo' }, { CONSTANTS.Bar: 'bar' }];

这显然是一个无效的语法。我应该如何解决这个问题?我正在考虑 Array.map(),但我想听听您的意见。

http://jsfiddle.net/wKYe6/

最佳答案

您不能拥有带有动态键的对象文字,您需要在对象初始化后添加属性:

var o, list = [];
o = {}; o[CONSTANTS.Foo] = 'foo'; list.push(o);
o = {}; o[CONSTANTS.Bar] = 'bar'; list.push(o);

当然,如果您知道常量和值之间的某种已知关系,您可以自动化此构造或使其更干燥。

您也可以这样做:

var list = [{ Foo: 'foo' }, { Bar: 'bar' }].map(function(o){
  for (var k in o) {
     o[Constants[k]]=o[k];
     delete o[k]; 
  }
  return o;
});

关于javascript - 对象键中的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19832060/

相关文章:

javascript - ionic : show image from file path from device

javascript - 如何在 JavaScript 中转换 css3 后获取元素的位置?

javascript - 如何在 Angular 中动态替换值?

javascript - Flask SocketIO - CORS 问题

javascript - 如何在超链接中包含 JavaScript 变量?

javascript - 使 highcharts 条形图阈值线可见并且标签不相互重叠

javascript - insideHTML 在 setInterval 上不改变

javascript - 如果用户在文本字段中输入值并直接按浏览器刷新按钮,onblur 事件不起作用?

javascript - 三.Object3D.add : object not an instance of THREE. Object3D

WordPress 页面中的 Javascript 功能无法工作