-1

我正在寻找一种将循环中的项目每次迭代转换为不同类型的方法。像这样的东西:

for (var i = 0; i < 100; i++)
for (var j = 0; j < 100; j++)
  newArr.push({
    date:arrA[i].subArr[j].myDate, 
    points+i:arrA[i].subArr[j].myPoints,
    league+i:arrA[i].subArr[j].myLeague
  });

这样的事情可能吗?

4

3 回答 3

2

我认为这种方法没有多大意义。您最好为您正在创建的每个对象拥有一个完全独立的“索引”属性。

for (var i = 0; i < 100; i++)
  for (var j = 0; j < 100; j++)
    newArr.push({
      index: i,
      date: arrA[i].subArr[j].myDate, 
      points: arrA[i].subArr[j].myPoints,
      league: arrA[i].subArr[j].myLeague
    });

这样,您的所有对象看起来都相似,每个对象的“索引”属性都在 0 到 99 的范围内。

于 2012-04-12T19:56:24.647 回答
2

在将其添加到数组之前,您是否尝试过创建一个对象并在之后更改属性?

for (var i = 0; i < 100; i++){
    for (var j = 0; j < 100; j++){
        var tmp = {};
        tmp['date'] = arrA[i].subArr[j].myDate;
        tmp['points'+i] = arrA[i].subArr[j].myPoints;
        tmp['league'+i] = arrA[i].subArr[j].myLeague;
        newArr.push(tmp);
    }
}
于 2012-04-12T19:53:20.080 回答
0

对象初始值设定项中的属性名称可能不是任意表达式,因此这是无效的语法:

newArr.push({
    "points" + i: arrA[i].subArr[j].myPoints
});

但是,您可以在下标中使用任意表达式:

var tmp = {};
tmp["points" + i] = arrA[i].subArr[j].myPoints;
...
newArr.push(tmp);
于 2012-04-12T19:58:07.677 回答