如何在forEach中创建一个对象而不在外面声明它?

时间:2017-12-15 16:04:11

标签: javascript

我想知道如何在foreach中创建一个对象?没有在这里发布我的所有代码,在我的情况下,我不能在foreach之外声明对象(使用react和做那个洞察我的渲染函数导致奇怪的结果)。我怎样才能做到这一点?谢谢!

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

2 个答案:

答案 0 :(得分:2)

您可以使用其他数组函数,例如reduce,如:

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

reduce将返回您可以使用或直接返回的累积列表(如果需要,不会将其分配给变量)。

答案 1 :(得分:1)

可以forEach

中创建一个对象
whatever.forEach(function(e) {
   var list[e.OriginLocation.AirportCode] = e.OriginLocation.CityName; 
});

list完成时,您将丢失对象的引用(名为forEach)。引用存储在调用堆栈中(当对forEach的调用返回时将丢失)并且对象本身存储在堆上。

该对象仍将存在于内存中,但您不会对其进行引用。

有用的阅读:

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

What and where are the stack and heap?

How variables are allocated memory in Javascript?