2 개체를 반환하는 promise.all이 있습니다. 이 두 개의 개별 개체의 공통 요소는 room
. 두 개체가 하나의 배열에 있기를 원하고 방이 일치하면 개체를 연결하고 싶습니다.
const urls = ['/room/*/userconfig', '/room/*/observation/latest'];
let requests = urls.map(url => axios.get(url));
Promise.all(requests)
.then(res => {
let patientObjArray = Object.values(res[0].data);
let patientObservationsArray = Object.values(res[1].data);
})
const patientObjArray = [
{
room: "room18",
patient: "91911671-302b-47b5-a24d-d2a1fea548d6",
hospitalNumber: "12"
},
{
room: "room19",
patient: "b793bbba-b2bb-4995-9247-bb4d4f2be65a",
hospitalNumber: "13"
},
{
room: "room20",
patient: "a8e8efa1-ea00-4d32-b4b2-58727200b9b0",
hospitalNumber: "14"
},
{
room: "room21",
patient: "asdadddaddada-b4badasd2-7272a00qb9b0",
hospitalNumber: "15"
}
];
// patientObservationsArray is data related to patientObjArray.room
const patientObservationsArray = [
{
observation: {
room: "room18",
timestamp: "10:00",
patient: "91911671-302b-47b5-a24d-d2a1fea548d6"
},
comment: { value: "Ok" }
},
{
observation: {
room: "room19",
timestamp: "11:00",
patient: "b793bbba-b2bb-4995-9247-bb4d4f2be65a"
},
comment: { value: "Good" }
},
{
observation: {
room: "room20",
timestamp: "12:00",
patient: "a8e8efa1-ea00-4d32-b4b2-58727200b9b0"
},
comment: { value: "bad" }
}
];
예상 출력
const combinedArray = [
{
room: "room18",
patient: "91911671-302b-47b5-a24d-d2a1fea548d6",
hospitalNumber: "12",
timestamp: "10:00",
comment: "Ok"
},
{
room: "room19",
patient: "b793bbba-b2bb-4995-9247-bb4d4f2be65a",
hospitalNumber: "13",
timestamp: "11:00",
comment: "Good"
},
{
room: "room20",
patient: "a8e8efa1-ea00-4d32-b4b2-58727200b9b0",
hospitalNumber: "14",
timestamp: "12:00",
comment: "Bad"
},
{
room: "room21",
patient: "asdadddaddada-b4badasd2-7272a00qb9b0",
hospitalNumber: "15"
}
];
여기 내 해결책이 있습니다. 이 코드를 시도하십시오.
const mergedArray = patientObjArray.map(obj => {
const matched = patientObservationsArray.find(obs => obs.observation.room === obj.room);
if (!!matched) {
return { ...obj, ...matched.observation, comment: matched.comment.value };
} else {
return obj;
}
});
console.log(mergedArray);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다