for (var i = 0; i < 7; i++) {
var _name = moment().subtract('days', i).format('dddd');
week_count.push({
_name: 0
});
}
这是我试图做的 - 但是,这会创建一个具有名为_name
的属性的对象列表,我该怎么做呢?我尝试像{ moment().subtract('days',i).format('dddd') : 0 }
那样执行它,但这导致语法错误。我该如何实现这一目标?
答案 0 :(得分:4)
您无法在对象文字中指定动态属性名称,但您可以改为使用bracket syntax:
for (var i = 0; i < 7; i++){
var _name = moment().subtract('days',i).format('dddd');
var obj = {};
obj[_name] = 0;
week_count.push(obj);
}
答案 1 :(得分:2)
您需要使用下标表示法动态指定密钥
for (var i = 0; i < 7; i++) {
var _name = moment().subtract('days', i).format('dddd'), object = {};
object [_name] = 0;
week_count.push(object);
}
你可能会稍微缩短它,比如这个
for (var i = 0; i < 7; i++) {
var object = {};
object[moment().subtract('days', i).format('dddd')] = 0;
week_count.push(object);
}
如果您正在寻找在一行中执行此操作的方法,那么您可能需要使用Object.defineProperty
,就像这样
for (var i = 0; i < 7; i++) {
var _name = moment().subtract('days', i).format('dddd');
week_count.push(Object.defineProperty({}, _name, {value:0,enumerable:true}));
}