2017-10-17 4 views
1

上のオブジェクトの二つの配列を結合:私はこのような二つのテーブルがある場合のMySQLではプロパティ

appointments 

appointment_id patient_id appointment_time 
------------------------------------------------------- 
1     42   2017-10-17 08:00:00 
2     43   2017-10-17 08:30:00 

patients 

patient_id name 
--------------------------- 
42   Joe Smith 
43   Sally Sue 
44   Jim Bob 

を、私はこの

SELECT * 
FROM appointments 
LEFT JOIN patients ON appointments.patient_id = patients.patient_id 
のような2つのテーブルを結合する左の可能性

となり、結果は次のようになります。

appointment_id patient_id appointment_time  patient_id name 
---------------------------------------------------------------------------------- 
1     42   2017-10-17 08:00:00 42   Joe Smith 
2     43   2017-10-17 08:30:00 43   Sally Sue 

私はこのような2つのオブジェクトの配列がある場合は私の質問には、Javascriptを(ES6 +)で、次のとおりです。

const appointments = [ 
    { 
    appointmentId: 1, 
    patientId: 42, 
    appointmentTime: '2017-10-17 08:00:00' 
    }, 
    { 
    appointmentId: 2, 
    patientId: 43, 
    appointmentTime: '2017-10-17 08:30:00' 
    } 
]; 

const patients = [ 
    { 
    patientId: 42, 
    name: 'Joe Smith' 
    }, 
    { 
    patientId: 43, 
    name: 'Sally Sue' 
    }, 
    { 
    patientId: 44, 
    name: 'Jim Bob' 
    } 
]; 

私は上に患者の配列を結合する左することができますどのように予定配列はpatientIdプロパティに基づいていますか?

[ 
    { 
    appointmentId: 1, 
    patientId: 42, 
    appointmentTime: '2017-10-17 08:00:00', 
    name: 'Joe Smith' 
    }, 
    { 
    appointmentId: 2, 
    patientId: 43, 
    appointmentTime: '2017-10-17 08:30:00', 
    name: 'Sally Sue' 
    } 
] 

私はそこunionBy方法がlodashにだが、それは予定オブジェクトのプロパティを削除することがわかっています。

答えて

2

次の操作を行います

代わりに `名の
let result = appointments.map(a => ({...patients.find(p => a.patientId === p.patientId), ...a})); 
+0

:、あなただけ'使用することができます終わりp.name' ...患者のすべての小道具にマージするp'。 –

+0

@BrianGlazもちろん!私は答えを変えました。 – dhilt

+0

私は '患者 'と'任命'を交換する傾向がありますので、結果は質問に尋ねられたように約1対1のアポイントメントにマッピングされます:p –

関連する問題