首先,我使用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')
考虑到我要做什么,在Java中将字符串分配为键的最佳方法是什么?
在JavaScript 的新ES2015标准(以前称为ES6)中,可以使用计算键创建对象Object Initializerspec
语法为:
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); }
注意:浏览器兼容性仍需要使用Transpiler 。
在早期的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); }