Javascript map массивы и объединение в один объект - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть следующая функция 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)}

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

Учитывая этот вход:

const values = {
   0: { groups: Array(8) },
   1: { links: Array(35) },
   2: { nodes: Array(35) }
};

Вы можете извлечь значения в виде массива, используя Object.values(), и уменьшить массив до объекта с помощью деструктурированного присваивания :

Object.values(values).reduce((acc, val) => ({ ...acc, ...val }), {})
0 голосов
/ 15 сентября 2018

Вместо map вы можете использовать reduce вот так:

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

  return acc;
}, {})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...