每个循环迭代转换为不同类型

时间:2012-04-12 19:46:49

标签: javascript

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

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
  });

这样的事情可能吗?

3 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分: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
    });

这样所有对象看起来都很相似,每个对象的“index”属性范围为0到99.

答案 2 :(得分:0)

object initializers中的属性名称可能不是任意表达式,因此语法无效:

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

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

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