如何在对象变量中增加值

时间:2014-09-16 19:34:40

标签: javascript variables

我有以下内容。

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;

任何想法?

3 个答案:

答案 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;
}


对于我在其他帖子中提供的错误信息再次抱歉。 (所有其他信息都是正确的。只是数组初始化代码很糟糕。)我希望这些更新的信息有所帮助。