私は、オブジェクトのフラットな配列に基づいて、JavaScriptで3次元配列のdynamicallを作成しようとしています。配列をループした後、配列は空に見えます。ループ中に印刷すると動作するように見えますが、消えてしまったように見えますので、これを呼び出し元に返す必要があります。助けて ?javascriptの3次元配列のスコープ?
//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
これらの「リーグ」、「除算」などのプロパティが数値でない場合は、実際には配列を構築していないため、プロパティを持つオブジェクトを構築しています。 JavaScript配列の動作は、数値インデックス付きのプロパティにのみ適用されます。その "sportsStandings"配列には正確に何が入っていますか? – Pointy
また、 'console.log'はブラウザ間で異なる印刷書式設定の動作をします。 – adu
sportsStandings [i] 'を変数に格納し、その変数を参照すると、パフォーマンスに役立ち、読みやすくなります。 – epascarello