2 개의 개별 객체 / 배열에 동일한 요소가 하나 있고 일치하는 요소가있는 경우 2 개의 객체를 하나의 배열로 연결하는 경우 비교하는 방법은 무엇입니까? 자바 스크립트

제레 메

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"
  }
];
TopW3

여기 내 해결책이 있습니다. 이 코드를 시도하십시오.

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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관