2017-12-15 7 views
3

foreach内でオブジェクトを作成する方法を知りましたか?ここに私のコードをすべて載せずに、私の場合、foreachの外にオブジェクトを宣言することはできません(反応を使って奇妙な結果につながるレンダリング関数を使って)。どうやってやるの?ありがとう!forEach内でオブジェクトを外部に宣言せずに作成するにはどうすればよいですか?

var list; 
    this.state.resp.forEach(function(e) { 
     list[e.OriginLocation.AirportCode] = e.OriginLocation.CityName; 
    }); 
+0

さて、あなたはのforEachの内側にそれを宣言することはできません。あなたは新しい変数に割り当てることができますか? –

答えて

2

あなたが好きなreduceとして別の配列関数を使用することができます(あなたがしたい場合は、変数に代入せずに)、あなたが使用したり、直接返すことができ、蓄積リストを返します

this.state.resp.reduce(function(list, e) { 
    list[e.OriginLocation.AirportCode] = e.OriginLocation.CityName; 
    return list; 
}, {}); 

reduce 。ときforEach完了、あなたのオブジェクトに(listという名前)参照を失うことになる

whatever.forEach(function(e) { 
    var list[e.OriginLocation.AirportCode] = e.OriginLocation.CityName; 
}); 

しかし:

1

あなたはforEach内部オブジェクトを作成することができます。参照は呼び出しスタックに格納されます(forEachへの呼び出しが戻ったときに失われます)。オブジェクト自体がヒープに格納されます。

オブジェクトはまだメモリに存在しますが、オブジェクトは参照されません。

役立ち読み:あなたはそれを再宣言するすべての反復する場合を除き、

http://cslibrary.stanford.edu/102/PointersAndMemory.pdf

What and where are the stack and heap?

How variables are allocated memory in Javascript?

関連する問題