我正在寻找一种将循环中的项目每次迭代转换为不同类型的方法。像这样的东西:
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
});
这样的事情可能吗?
我正在寻找一种将循环中的项目每次迭代转换为不同类型的方法。像这样的东西:
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
});
这样的事情可能吗?
我认为这种方法没有多大意义。您最好为您正在创建的每个对象拥有一个完全独立的“索引”属性。
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 的范围内。
在将其添加到数组之前,您是否尝试过创建一个对象并在之后更改属性?
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);
}
}
对象初始值设定项中的属性名称可能不是任意表达式,因此这是无效的语法:
newArr.push({
"points" + i: arrA[i].subArr[j].myPoints
});
但是,您可以在下标中使用任意表达式:
var tmp = {};
tmp["points" + i] = arrA[i].subArr[j].myPoints;
...
newArr.push(tmp);