【问题标题】:How to create an object inside forEach without declaring it outside?如何在 forEach 内部创建一个对象而不在外部声明它?
【发布时间】:2018-05-29 21:01:37
【问题描述】:

我想知道如何在 foreach 中创建一个对象?如果不在这里发布我的所有代码,就我而言,我无法在 foreach 之外声明对象(使用反应并洞察我的渲染函数会导致奇怪的结果)。我怎样才能做到这一点?谢谢!

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

【问题讨论】:

  • 好吧,你不能在 forEach 中声明它,除非你想在每次迭代中重新声明它。你能分配一个新的变量吗?

标签: javascript


【解决方案1】:

可以forEach中创建一个对象:

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

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

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

有用的阅读:

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

What and where are the stack and heap?

How variables are allocated memory in Javascript?

【讨论】:

    【解决方案2】:

    您可以使用另一个数组函数,例如reduce like:

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

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

    【讨论】:

      猜你喜欢
      • 2010-09-27
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 2010-12-25
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多