每次循环迭代强制转换为不同的类型

Casting to a different type each loop iteration

本文关键字:类型 转换 循环 迭代      更新时间:2023-09-26

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

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++){
        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);
    }
}
我认为

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

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 的范围内。

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

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

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

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