JavaScript 中三维数组的范围

scope of 3 dimensional array in javascript?

本文关键字:范围 数组 三维 JavaScript      更新时间:2023-09-26

我正在尝试创建一个基于平面对象数组的 JavaScript 中的 3 维数组 dynamicall。 循环遍历数组后,数组显示为空。如果我在循环中打印,它似乎可以工作,但随后它似乎消失了,我想将其返回给调用方。帮助?

//init the 3d array ??
this.teams = [];
for(var i = 0; i < sportsStandings.length; i++) {
  var item = sportsStandings[i];
  if(!this.teams[item.league]) 
    this.teams[item.league] = new Array();
  if(!this.teams[item.league][item.division])
    this.teams[item.league][item.division] = new Array();
  this.teams[item.league][item.division][this.teams[item.league][item.division].length] 
    = new Team(item.teamName, item.wins, item.losses);
  console.log(this.teams); //this prints properly, and i see the 3d array grow
}
console.log('second' + this.teams); //this prints nothing

我稍微清理了一下代码,还有其他几种编写方法。

this.teams = [];
var teams = this.teams;
for(var i = 0; i < sportsStandings.length; i++) {
    var ss = sportsStandings[i],
        league = ss.league,
        division = ss.division,
        teamName = ss.teamName,
        wins = ss.wins,
        losses = ss.losses;
    if (!teams[league]) {
        teams[league] = {};
        teams[league][division] = [];
    } else if (!teams[league][division]) {
        teams[league][division] = [];
    }
    var newTeam = new Team(teamName, wins, losses);
    teams[league][division].push(newTeam);
}