Javascript映射数组并合并到一个对象

Javascript映射数组并合并到一个对象,javascript,angular,typescript,firebase,firebase-realtime-database,Javascript,Angular,Typescript,Firebase,Firebase Realtime Database,我有以下firebase函数 this.sensorService.getTest() .snapshotChanges() .pipe( map(actions => actions.map(a => ({ [a.payload.key]: a.payload.val() }))) ).subscribe(sensors => { this.sensors = sensor

我有以下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)}

您可以使用
reduce
而不是
map
,如下所示:

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

  return acc;
}, {})
鉴于这一投入:

const values = {
   0: { groups: Array(8) },
   1: { links: Array(35) },
   2: { nodes: Array(35) }
};
您可以使用以数组形式检索值,并将数组缩减为具有以下内容的对象:


虽然我很喜欢这种语法,但这里的每个循环都要创建一个新对象
Object.values(values).reduce((acc, val) => ({ ...acc, ...val }), {})