首页 > 解决方案 > Javascript 映射数组并合并到一个对象

问题描述

我有以下 Firebase 功能

  this.sensorService.getTest()
    .snapshotChanges()
    .pipe(
      map(actions =>
        actions.map(a => ({
          [a.payload.key]: a.payload.val()
        })))
    ).subscribe(sensors => {
      this.sensors = sensors;
      console.log(this.sensors);
    });

它现在将数据返回到不同的数组,console.log 显示如下:

0: {groups: Array(8)}1: {links: Array(35)}2: {nodes: Array(35)}

如何将所有这些数组合并在一起并将它们全部放在一个对象中?Console.log 应该返回:

{groups: Array(8), nodes: Array(35), links: Array(35)}

标签: javascriptangulartypescriptfirebasefirebase-realtime-database

解决方案


而不是map你可以reduce这样使用:

actions.reduce((acc, a) => {
  acc[a.payload.key] = a.payload.val();

  return acc;
}, {})

推荐阅读