首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数在另一个函数中的每个循环中都不会在内部运行。

函数在另一个函数中的每个循环中都不会在内部运行。
EN

Stack Overflow用户
提问于 2022-03-05 06:37:04
回答 2查看 56关注 0票数 0

有人能告诉我为什么patientMatch函数似乎没有运行。我需要把检查信息和病人的信息匹配起来才能显示在桌子上。在displayExams函数之外运行函数没有问题,但是一旦它在displayExams函数中运行,它就不会运行。同时,在patientMatch函数中注销displayExams也会带来未定义的结果。

代码语言:javascript
复制
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;
}
EN

回答 2

Stack Overflow用户

发布于 2022-03-05 07:38:58

您需要提供有关代码的更多详细信息。

如果在另一个函数中声明一个函数以使用内部函数,那么首先必须至少调用一次父函数。

检查函数的名称,以检查您可能意外编写的任何错误。因为如果你这样做了,而且你不在use strict模式下,你就不会得到任何错误。

当涉及到代码时,javascript有两个阶段。创建阶段和执行阶段。在创建阶段,变量被创建,它们的值被设置为未定义,在执行阶段,实际值将被设置。因此,如果不声明调用的函数,则会出现引用错误。由于您没有--而且您看到了未定义的--声明是成功的。因此,在examPatientMatch函数中,if语句永远不匹配,除了未定义的之外,什么都不会返回

当我看到你的代码时,我有一些提示要告诉你。

我看到你想在patiens数组的列表中找到匹配考试。最好是将对象和数组传递给函数。通过这种方式,您可以在以后重用该函数。

代码语言:javascript
复制
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的值检查和对象。

您可以为考试对象使用析构作业。

代码语言:javascript
复制
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这样的函数时,您可以这样做:

代码语言:javascript
复制
const match = patients.find(element => element.PATIENT_ID === exam.patient_Id)
// or exam if you sure exam is not object in your function
票数 0
EN

Stack Overflow用户

发布于 2022-03-05 17:59:56

谢谢我找到了问题所在。是一个小问题,因为在获取病人数据之前调用了displayExam函数,导致它显示未定义的数据。

至于我为什么使用patient_IdPATIENT_ID,是由于数据是如何创建的。

我将尝试使用.find方法来帮助清理代码。再次感谢大家。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71360044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档