我有以下内容。
var dataset = {val1 : 0, val2 : 0, val3 : 0};
var person = [];
var totalPeople = 10;
for(var i = 0; i <totalPeople; i++) {
person[i] = dataset;
}
为什么我选择此方法,请点击here .
我试图让其中一个值在另一个for
循环内自动递增。
我尝试过以下方法无济于事。
person[1]{val1 : 0,
val2 : 0,
val3 : val3 + 1};
person[1]{val1 : 0,
val2 : 0,
val3 : person[1].val3 + 1};
person[1].val3 = person[1].val3 + 1;
任何想法?
答案 0 :(得分:6)
这应该是正确的:
person[1].val3 += 1;
答案 1 :(得分:1)
这应该有用。
var dataset = {val1 : 0, val2 : 0, val3 : 0};
var person = [];
var totalPeople = 10;
for(var i = 0; i <totalPeople; i++) {
dataset[i].val3 ++;
}
你能解释一下你想要达到的目标吗?
答案 2 :(得分:1)
完全对不起。您here引用的解决方案由我发布,但不正确。我刚刚在那篇文章中更新了我的答案。
不要使用我最初发布的数组初始化样式:
var dataset = {val1 : 0, val2 : 0, val3 : 0};
var person = [];
var totalPeople = 10;
for(var i = 0; i < totalPeople; i++) {
person[i] = dataset; // this assigns the *same* object reference to every
// member of the person array.
}
这是初始化人员阵列的正确方式:
var person = [];
var totalPeople = 10;
for(var i = 0; i < totalPeople; i++) {
person[i] = {val1 : 0, val2 : 0, val3 : 0}; // do this to create a *unique* object
// for every person array element
}
如果使用上面正确显示的正确数组初始化,那么每次循环迭代都可以像这样增加val3:
var person = [];
var totalPeople = 10;
for(var i = 0; i < totalPeople; i++) {
person[i] = {val1 : 0, val2 : 0, val3 : 0};
person[i]['val3'] = i;
}
对于我在其他帖子中提供的错误信息再次抱歉。 (所有其他信息都是正确的。只是数组初始化代码很糟糕。)我希望这些更新的信息有所帮助。