javascript - 将数组内的数组展平

标签 javascript angular typescript geojson

我正在从 geojson 文件获取数据,并且想要展平数组中的数组,以便能够在 Material 表中显示此数据。

我有以下代码:

          const geoListData: Array<any> = [];
          const features = geoData.features; // feature array
          const latIdx = 0;
          const lonIdx = 1;

          // iterate over each feature
          features.forEach((feature: any) => {
            const geoListArray: any = [];

            // build up GeoListEntry
            const geoListEntry: GeoListEntry = {
              name: feature.properties.name,
              category: feature.properties.category,
              lat: feature.geometry.coordinates[latIdx],
              lon: feature.geometry.coordinates[lonIdx],
              prio: feature.properties.prio
            };

            geoListArray.push(geoListEntry);

            // get values from geojson
            feature.properties.values.forEach((element: any) => {
              const valuesEntry: any = {
                [element.name]: element.value
              };
              geoListArray.push(valuesEntry);
            });

            this.logger.debug(`geoListArray: ${JSON.stringify(geoListArray)}`);

            geoListData.push(geoListArray);
          });

      return geoListData;
    }));

我的记录器输出如下所示:

[{"name":"90","category":"Arc 12 month","lat":7.613333333,"lon":47.555555,"prio":0},{"bearing":12345},{"intensity_mean":0},{"intensity_min":0},{"intensity_max":0}]

但我想要这样的东西:

[{"name":"90","category":"Arc 12 month","lat":7.613333333,"lon":47.555555,"prio":0,"bearing":12345,"intensity_mean":0,"intensity_min":0,"intensity_max":0}]

我已经很接近了,但我找不到解决方案。

你有什么想法吗?

最佳答案

不要将其推送到数组,而是直接将属性添加到对象

// iterate over each feature
features.forEach((feature: any) => {
  const geoListArray: any = [];

  // build up GeoListEntry
  const geoListEntry: GeoListEntry = {
    name: feature.properties.name,
    category: feature.properties.category,
    lat: feature.geometry.coordinates[latIdx],
    lon: feature.geometry.coordinates[lonIdx],
    prio: feature.properties.prio
  };

  // get values from geojson
  feature.properties.values.forEach((element: any) => {
    geoListEntry[element.name] = element.value
  });

  geoListArray.push(geoListEntry);

  this.logger.debug(`geoListArray: ${JSON.stringify(geoListArray)}`);

  geoListData.push(geoListArray);
});

关于javascript - 将数组内的数组展平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56493716/

相关文章:

javascript - 主干箭头功能和这个

angular - 从 Angular 5 中的服务函数返回后,复杂的服务对象从组件更改

typescript - InversifyJS 注入(inject)文字构造函数参数

typescript - 为 CDN 使用类型

javascript - 在 JavaScript 中分解函数名称

javascript - Safari 是否支持 Web Audio API source.start(0)(它在 Chrome 上运行良好)?

javascript - 代码战斗 : Correct solution but system does not accept it

angular - 将 md-sidenav 切换到不同的组件

angular - MatCheckbox - Angular Material - 单元测试 - 如何单击以选择/取消选择所有行

javascript - Angular 7 - promise 内的 forEach 迭代在 promise 解决后执行。为什么?