JDi*_*522 315 javascript object
首先,我使用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);
}
Run Code Online (Sandbox Code Playgroud)
它输出这个:
[ { key: '1' }, { key: '1' } ]
Run Code Online (Sandbox Code Playgroud)
(.map()返回一个对象数组fyi)
我需要key实际上是来自的字符串this.attr('name').
什么是在Javascript中将字符串指定为键的最佳方法,考虑到我正在尝试做什么?
Ren*_*non 810
在用于JavaScript 的新ES2015标准(以前称为ES6)中,可以使用计算键创建对象:对象初始化程序规范.
语法是:
var obj = {
[myKey]: value,
}
Run Code Online (Sandbox Code Playgroud)
如果应用于OP的场景,它将变为:
stuff = function (thing, callback) {
var inputs = $('div.quantity > input').map(function(){
return {
[this.attr('name')]: this.attr('value'),
};
})
callback(null, inputs);
}
Run Code Online (Sandbox Code Playgroud)
使用Babel或Google的traceur,今天可以使用此语法.
在早期的JavaScript规范(ES5及更低版本)中,对象文字中的键始终按字面解释为字符串.
要使用"动态"键,必须使用括号表示法:
var obj = {};
obj[myKey] = value;
Run Code Online (Sandbox Code Playgroud)
在你的情况下:
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);
}
Run Code Online (Sandbox Code Playgroud)
Den*_*ret 40
您无法使用动态键定义对象文字.做这个 :
var o = {};
o[key] = value;
return o;
Run Code Online (Sandbox Code Playgroud)
没有捷径(编辑:现在有一个,ES6,见另一个答案).