首先,我使用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)
.map()
我key实际上需要成为来自this.attr('name').
key
this.attr('name')
考虑到我正在尝试做什么,将字符串分配为 Javascript 中的键的最佳方法是什么?
在 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); }
注意: 浏览器兼容性仍然需要转译器。
使用Babel或Google 的 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); }