使用中间人对象将数组中的数据连接到对象
Connecting data from an array to an object by using a middleman object
有没有办法使用 all_appointments
将 queued_Dr
连接到 upcoming_appointments
解决这个问题的最佳方法是什么?
var queued_Dr = ["Dr.Salazar",["Dr.Connors","Dr.Johnson"],"Dr.Pearson"]
upcoming_appointments =
[{"DOB":"01-27-2002","name":"Judy, W." ,"PCD":"Dr-S"}
,{"DOB":"08-15-1995","name":"John, V." ,"PCD":"Dr-C"}
,{"DOB":"07-05-1992","name":"David, C.","PCD":"Dr-S"}
,{"DOB":"01-15-2002","name":"Anna, S." ,"PCD":"Dr-J"}
,{"DOB":"01-15-2002","name":"Jeff, D." ,"PCD":"Dr-P"}]
all_appointments =
{"0": ["Dr-S","New York","Dr.Salazar"],
"1": ["Dr-C","Austin","Dr.Connors"],
"2": ["Dr-J","Austin","Dr.Johnson"],
"3": ["Dr-S","New York","Dr.Salazar"],
"4": ["Dr-P","San Juan","Dr.Pearson"],
"5": ["Dr-J","Austin","Dr.Johnson"]}
目标产出
"Dr.Salazar" -> "Dr-S"
["Dr.Connors","Dr.Johnson"] -> "Dr-C" or "Dr-J"
"Dr.Pearson"] -> "Dr-P"
输入是 queued_Dr
和 upcoming_appointments.PCD
//Tried to see if the values where in the same dictionary
function find_by_exception_name(dr_name) {
return all_appointments.find((row) => row.upcoming_appointments == dr_name || row.upcoming_appointments.includes(dr_name));
}
//would return true or false if a Doctors name from queued_Dr and upcoming appointments existed in all_appointments
根据您提供给我们的信息,您根本不需要 upcoming_appointments
。下面的代码将 return 给你想要的结果。
const mapTo = (arrayWithNames) => {
return arrayWithNames.map(name => {
if (Array.isArray(name)) {
return mapTo(name);
}
const appointment = Object.values(all_appointments)
.find(appointment => appointment[2] === name);
const upcommingAppointment = upcoming_appointments
.find(currentAppointment => currentAppointment.PCD === appointment[0])
console.log(`This is the upcomming appointment for your doctor ${JSON.stringify(upcommingAppointment)}`)
return `${name} -> ${appointment[0]}`
})
}
const result = mapTo(queued_Dr)
另外,请正确格式化您的代码。在 JavaScript 中,将左大括号放在新行上不是一个好习惯,因为这在某些情况下可能会导致意外结果。
编辑:我添加了 console.log 这样您就可以看到您的医生的正确预约,但您没有解释您想要如何使用它。
有没有办法使用 all_appointments
queued_Dr
连接到 upcoming_appointments
解决这个问题的最佳方法是什么?
var queued_Dr = ["Dr.Salazar",["Dr.Connors","Dr.Johnson"],"Dr.Pearson"]
upcoming_appointments =
[{"DOB":"01-27-2002","name":"Judy, W." ,"PCD":"Dr-S"}
,{"DOB":"08-15-1995","name":"John, V." ,"PCD":"Dr-C"}
,{"DOB":"07-05-1992","name":"David, C.","PCD":"Dr-S"}
,{"DOB":"01-15-2002","name":"Anna, S." ,"PCD":"Dr-J"}
,{"DOB":"01-15-2002","name":"Jeff, D." ,"PCD":"Dr-P"}]
all_appointments =
{"0": ["Dr-S","New York","Dr.Salazar"],
"1": ["Dr-C","Austin","Dr.Connors"],
"2": ["Dr-J","Austin","Dr.Johnson"],
"3": ["Dr-S","New York","Dr.Salazar"],
"4": ["Dr-P","San Juan","Dr.Pearson"],
"5": ["Dr-J","Austin","Dr.Johnson"]}
目标产出
"Dr.Salazar" -> "Dr-S"
["Dr.Connors","Dr.Johnson"] -> "Dr-C" or "Dr-J"
"Dr.Pearson"] -> "Dr-P"
输入是 queued_Dr
和 upcoming_appointments.PCD
//Tried to see if the values where in the same dictionary
function find_by_exception_name(dr_name) {
return all_appointments.find((row) => row.upcoming_appointments == dr_name || row.upcoming_appointments.includes(dr_name));
}
//would return true or false if a Doctors name from queued_Dr and upcoming appointments existed in all_appointments
根据您提供给我们的信息,您根本不需要 upcoming_appointments
。下面的代码将 return 给你想要的结果。
const mapTo = (arrayWithNames) => {
return arrayWithNames.map(name => {
if (Array.isArray(name)) {
return mapTo(name);
}
const appointment = Object.values(all_appointments)
.find(appointment => appointment[2] === name);
const upcommingAppointment = upcoming_appointments
.find(currentAppointment => currentAppointment.PCD === appointment[0])
console.log(`This is the upcomming appointment for your doctor ${JSON.stringify(upcommingAppointment)}`)
return `${name} -> ${appointment[0]}`
})
}
const result = mapTo(queued_Dr)
另外,请正确格式化您的代码。在 JavaScript 中,将左大括号放在新行上不是一个好习惯,因为这在某些情况下可能会导致意外结果。
编辑:我添加了 console.log 这样您就可以看到您的医生的正确预约,但您没有解释您想要如何使用它。