有人能告诉我为什么patientMatch函数似乎没有运行。我需要把检查信息和病人的信息匹配起来才能显示在桌子上。在displayExams函数之外运行函数没有问题,但是一旦它在displayExams函数中运行,它就不会运行。同时,在patientMatch函数中注销displayExams也会带来未定义的结果。
function examPatientMatch(exam) {
for (let i = 0; i < patients.length; i++) {
if ( exam === patients[i].PATIENT_ID ) {
return patiens[i]
} else {
console.log('not it')
}
}
}
function displayExams(exams) {
let examHTML = '';
exams.forEach((exam, index) => {
let patientId = exam.patient_Id;
// let imgStudyDays = exam.Diag_to_img_study_days;
// let imgStudyHrs = exam.Diagnosis_to_imaging_time_hrs;
// let imgDesc = exam.Image_study_description;
let studyMod = exam.study_modality;
let keyFind = exam.key_findings;
let img = exam.png_filename;
let examId = exam.exam_Id;
examPatientMatch(exam)
examHTML += `
<div class="exam-row" data-index="${index}">
<div class="cell" data-title="Patient ID"><a>${patientId}</a></div>
<div class="cell" data-title="Exam ID">${examId}</div>
<div class="cell" data-title="Xray"><img src="https://ohif-hack-diversity-covid.s3.amazonaws.com/covid-png/${img}" alt="Xray"></div>
<div class="cell" data-title="Key FIndings">${keyFind}</div>
<div class="cell" data-title="Study Modality">${studyMod}</div>
<div class="cell" data-title="Age">51</div>
<div class="cell" data-title="Gender">Male</div>
<div class="cell" data-title="BMI">37.7</div>
<div class="cell" data-title="Zip Code">722</div>
</div>`
});
examTable.innerHTML += examHTML;
}发布于 2022-03-05 07:38:58
您需要提供有关代码的更多详细信息。
如果在另一个函数中声明一个函数以使用内部函数,那么首先必须至少调用一次父函数。
检查函数的名称,以检查您可能意外编写的任何错误。因为如果你这样做了,而且你不在use strict模式下,你就不会得到任何错误。
当涉及到代码时,javascript有两个阶段。创建阶段和执行阶段。在创建阶段,变量被创建,它们的值被设置为未定义,在执行阶段,实际值将被设置。因此,如果不声明调用的函数,则会出现引用错误。由于您没有--而且您看到了未定义的--声明是成功的。因此,在examPatientMatch函数中,if语句永远不匹配,除了未定义的之外,什么都不会返回
当我看到你的代码时,我有一些提示要告诉你。
我看到你想在patiens数组的列表中找到匹配考试。最好是将对象和数组传递给函数。通过这种方式,您可以在以后重用该函数。
function findItemInListByKey(object, array, key) {
for (let i = 0; i < array.length; i++) {
if ( exam === array[i][key] ) {
return array[i];
} else {
console.log('not it')
}
}
}
findItemInListByKey(exam, patiens,'PATIENT_ID')2-在foreach回调中,您尝试访问patient_Id小写,但在examPatientMatch函数中,您尝试使用一个应该执行exam.patient_Id === patients[i].PATIENT_ID的值检查和对象。
您可以为考试对象使用析构作业。
let examHTML = '';
exams.forEach((exam, index) => {
const {
patient_Id,
Diag_to_img_study_days,
Diagnosis_to_imaging_time_hrs,
Image_study_description,
study_modality,
key_findings,
png_filename,
exam_Id } = exam;
examPatientMatch(exam)
examHTML += `
<div class="exam-row" data-index="${index}">
<div class="cell" data-title="Patient ID"><a>${patientId}</a></div>
<div class="cell" data-title="Exam ID">${examId}</div>
<div class="cell" data-title="Xray"><img src="https://ohif-hack-diversity-covid.s3.amazonaws.com/covid-png/${img}" alt="Xray"></div>
<div class="cell" data-title="Key FIndings">${keyFind}</div>
<div class="cell" data-title="Study Modality">${studyMod}</div>
<div class="cell" data-title="Age">51</div>
<div class="cell" data-title="Gender">Male</div>
<div class="cell" data-title="BMI">37.7</div>
<div class="cell" data-title="Zip Code">722</div>
</div>`
});
examTable.innerHTML += examHTML;3-您可以使用名为find的javascript高级函数,这是处理在数组中查找对象的更简洁的方法。因此,在编写像examPatientMatch这样的函数时,您可以这样做:
const match = patients.find(element => element.PATIENT_ID === exam.patient_Id)
// or exam if you sure exam is not object in your function发布于 2022-03-05 17:59:56
谢谢我找到了问题所在。是一个小问题,因为在获取病人数据之前调用了displayExam函数,导致它显示未定义的数据。
至于我为什么使用patient_Id和PATIENT_ID,是由于数据是如何创建的。
我将尝试使用.find方法来帮助清理代码。再次感谢大家。
https://stackoverflow.com/questions/71360044
复制相似问题