使用动态键创建对象[重复]

2020/09/30 22:01 · javascript ·  · 0评论

首先,我使用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')

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

JavaScript的新ES2015标准(以前称为ES6)中,可以使用计算键创建对象Object Initializer spec

语法为:

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);
}

您不能使用动态键定义对象文字。做这个 :

var o = {};
o[key] = value;
return o;

没有捷径(编辑:ES6现在有一个捷径,请参见另一个答案)。

本文地址:http://javascript.askforanswer.com/shiyongdongtaijianchuangjianduixiangzhongfu.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!