将数组中的数据连接到对象以通过中间人转换其值
Connecting data from an array to an object to transform its value with a middleman
使用 queued_Dr
更改其值的最佳方法是什么,例如使用 all_appointments
更改其值 upcoming_appointments.PCD
?
解决这个问题的最佳方法是什么?
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 =
[["Dr-S","New York","Dr.Salazar"],
["Dr-C","Austin","Dr.Connors"],
["Dr-J","Austin","Dr.Johnson"],
["Dr-S","New York","Dr.Salazar"],
["Dr-P","San Juan","Dr.Pearson"],
["Dr-J","Austin","Dr.Johnson"]]
输入:
queued_Dr = ["Dr.Salazar","Dr.Connors","Dr.Johnson","Dr.Pearson"]
期望的输出:
queued_Dr = ["Dr-S","Dr-C","Dr-J","Dr-P"]
实际输出:
[ undefined, undefined, undefined, undefined ]
尝试
const mapTo = (arrayWithNames) => {
var newArray = [];
return arrayWithNames.map(name => {
const appointment = Object.values(all_appointments)
.find(appointment => appointment[2] === name);
newArray.push(appointment[0]);
})
return newArray;
}
const result = mapTo(queued_Dr)
console.log(result);
第一个解决办法是在all_appointments中找到名字和return对应的缩写。
第二种解决方案是只写缩写而不用其他数组。
const queued_Dr = ["Dr.Salazar","Dr.Connors","Dr.Johnson","Dr.Pearson"];
const all_appointments = [["Dr-S","New York","Dr.Salazar"],["Dr-C","Austin","Dr.Connors"],["Dr-J","Austin","Dr.Johnson"],["Dr-S","New York","Dr.Salazar"],["Dr-P","San Juan","Dr.Pearson"],["Dr-J","Austin","Dr.Johnson"]];
const result1 = queued_Dr
.map((queu) => all_appointments
.find((appointment) => appointment.at(-1) === queu)
.at(0));
console.log(result1);
const result2 = queued_Dr
.map((queu) => {
const [abbr, name] = queu.split('.');
return `${abbr}-${name.at(0)}`;
});
console.log(result2);
.as-console-wrapper {max-height: 100% !important; top: 0}
使用 queued_Dr
更改其值的最佳方法是什么,例如使用 all_appointments
更改其值 upcoming_appointments.PCD
?
解决这个问题的最佳方法是什么?
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 =
[["Dr-S","New York","Dr.Salazar"],
["Dr-C","Austin","Dr.Connors"],
["Dr-J","Austin","Dr.Johnson"],
["Dr-S","New York","Dr.Salazar"],
["Dr-P","San Juan","Dr.Pearson"],
["Dr-J","Austin","Dr.Johnson"]]
输入:
queued_Dr = ["Dr.Salazar","Dr.Connors","Dr.Johnson","Dr.Pearson"]
期望的输出:
queued_Dr = ["Dr-S","Dr-C","Dr-J","Dr-P"]
实际输出:
[ undefined, undefined, undefined, undefined ]
尝试
const mapTo = (arrayWithNames) => {
var newArray = [];
return arrayWithNames.map(name => {
const appointment = Object.values(all_appointments)
.find(appointment => appointment[2] === name);
newArray.push(appointment[0]);
})
return newArray;
}
const result = mapTo(queued_Dr)
console.log(result);
第一个解决办法是在all_appointments中找到名字和return对应的缩写。
第二种解决方案是只写缩写而不用其他数组。
const queued_Dr = ["Dr.Salazar","Dr.Connors","Dr.Johnson","Dr.Pearson"];
const all_appointments = [["Dr-S","New York","Dr.Salazar"],["Dr-C","Austin","Dr.Connors"],["Dr-J","Austin","Dr.Johnson"],["Dr-S","New York","Dr.Salazar"],["Dr-P","San Juan","Dr.Pearson"],["Dr-J","Austin","Dr.Johnson"]];
const result1 = queued_Dr
.map((queu) => all_appointments
.find((appointment) => appointment.at(-1) === queu)
.at(0));
console.log(result1);
const result2 = queued_Dr
.map((queu) => {
const [abbr, name] = queu.split('.');
return `${abbr}-${name.at(0)}`;
});
console.log(result2);
.as-console-wrapper {max-height: 100% !important; top: 0}