我有这个数组对象启动每个索引:
var example = { 'hours': 0, 'overtime': 0, 'income': 0, 'expenditure': 0 };
但它位于.each()
循环内。每个索引都需要一个唯一标识符,例如:hours0
hours1
。
我用来附加后缀的旧格式很笨重。
example['hours' + index] = 0;
example['overtime' + index] = 0;
example['income' + index] = 0;
example['expenditure' + index] = 0;
我尝试了以下内容。
var example = { 'hours'+index: 0, 'overtime'+index: 0, 'income'+index: 0, 'expenditure'+index: 0 };
但结果是:Uncaught SyntaxError: Unexpected token +
任何想法?
答案 0 :(得分:2)
以下是另一种可能适合您的方法:
var employee = [];
var numEmpl = 100; // total number of employees
for(var i = 0; i < numEmpl; i++)
employee[i] = {'hours' : 0, 'overtime' : 0, 'income' : 0, 'expenditure' : 0};
上面的代码为您提供了一系列对象,每个员工一个。每个对象(employee)属性都可以单独访问:
employee[20].overtime = 10;
console.log(employee[20].overtime) // => 10
或者,您可以一次更新给定员工的所有信息,如下所示:
employee[30] = {'hours' : 45, 'overtime' : 5, 'income' : 1000, 'expenditure' : 0}
console.log(employee[30].overtime) // => 5
要添加新员工,只需执行以下操作:
employee.push({'hours' : 0, 'overtime' : 0, 'income' : 0, 'expenditure' : 0})
答案 1 :(得分:1)
添加新密钥并删除旧密钥
var example = {
'hours': 0,
'overtime': 0,
'income': 0,
'expenditure': 0
};
var index = 0;
for (var key in example) {
example[key + index] = example[key];//adding new key with old value
delete example[key];//delete old key
}
console.log(example);
输出 Object {hours0: 0, overtime0: 0, income0: 0, expenditure0: 0}
答案 2 :(得分:0)
杰拉德(Gerald)的答案肯定是最好的方法。
但是请注意,也可以将字符串表达式评估为内联对象字段。操作方法如下:
let a = { ['foo' + 'bar' + 123]: 5 }
// a is now { foobar123: 5 }