小编典典

使用动态键创建对象

all

首先,我使用Cheerio进行一些 DOM 访问并使用
Node.js 进行解析。美好时光。

情况如下:

我有一个需要创建对象的函数。该对象对其键和值都使用变量,然后返回该单个对象。例子:

stuff = function (thing, callback) {
  var inputs  = $('div.quantity > input').map(function(){
    var key   = this.attr('name')
     ,  value = this.attr('value');

     return { key : value }
  })

  callback(null, inputs);
}

它输出这个:

[ { key: '1' }, { key: '1' } ]

.map()返回一个对象数组 fyi)

key实际上需要成为来自this.attr('name').

考虑到我正在尝试做什么,将字符串分配为 Javascript 中的键的最佳方法是什么?


阅读 89

收藏
2022-03-22

共1个答案

小编典典

在 JavaScript 的新ES2015 标准(以前称为 ES6)中,可以使用 计算键
创建对象:对象初始化规范

语法是:

var obj = {
  [myKey]: value,
}

如果应用于 OP 的场景,它将变成:

stuff = function (thing, callback) {
  var inputs  = $('div.quantity > input').map(function(){
    return {
      [this.attr('name')]: this.attr('value'),
    };
  })

  callback(null, inputs);
}

注意: 浏览器兼容性仍然需要转译器。

使用BabelGoogle 的
traceur
,今天可以使用这种语法


在早期的 JavaScript 规范(ES5 及以下)中,对象文字中的键总是按字面意思解释为字符串。

要使用“动态”键,您必须使用 括号表示法

var obj = {};
obj[myKey] = value;

在你的情况下:

stuff = function (thing, callback) {
  var inputs  = $('div.quantity > input').map(function(){
    var key   = this.attr('name')
     ,  value = this.attr('value')
     ,  ret   = {};

     ret[key] = value;
     return ret;
  })

  callback(null, inputs);
}
2022-03-22