首先,我使用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()返回一个对象数组供参考)
我需要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或谷歌的traceur,今天就可以使用这种语法。
在早期的JavaScript规范(ES5及以下)中,对象字面值中的键总是按字面解释为字符串。
要使用"dynamic"键,你必须使用括号:
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);
}
在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或谷歌的traceur,今天就可以使用这种语法。
在早期的JavaScript规范(ES5及以下)中,对象字面值中的键总是按字面解释为字符串。
要使用"dynamic"键,你必须使用括号:
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);
}