У меня есть два массива объектов для их объединения. Первый из них является результатом извлечения snapshotChanges (участники), а второй - результатом извлечения valueChanges (usersRoom).
//First one (participants)
participants = [
{id: 123, message: 'OK'},
{id: 456, message: 'Hey'}
];
//Second one (usersRoom)
for(var i=0; i < this.participants.length; i++){
this.room = this.db.object('users/' + this.participants[i].id).valueChanges();
this.room.subscribe(
res => {
this.usersRoom.push(res);
});
}
Но когда я пытаюсь объединить их, используя приведенный ниже код, это возвращает пустой массив:
this.final = this.usersRoom.reduce((arr, e) => {
arr.push(Object.assign({}, e, this.participants.find(a => a.id === e.id)))
return arr;
}, [])
Я проверил, создал ли я фальшивый объект, вместо того, чтобы захватить valueChanges, только для проверки кода, который выполняет слияние выше и работает отлично.
Когда я запустил console.log в результатах, я заметил, что они отображаются по-разному на консоли (см. Первую строку для каждого):
//participants
(2) [{…}, {…}]
0: {id: "123", message: "OK"}
1: {id: "456", message: "Hey"}
//usersRoom
[]
0: {name: "John", age: "28", id: "123"}
1: {name: "Mary", age: "32", id: "456"}
Мне кажется, что оба формата не одинаковы, поэтому в итоге они не объединяются.
Так как я могу это сделать, чтобы их можно было объединить?