其他语句不会停止循环NodeJS

时间:2019-06-04 06:49:08

标签: node.js for-loop if-statement

我一直在研究此代码,以通读PDF文件并获取公司名称的关键字并显示它们。一切正常,除了其中else if语句输出一行(这是我想要的)的一部分之外,但最后出现的else语句(应该输出“ Not Found”)在我只希望显示的地方循环20次输出仅一次而不是20次。

我已经尝试通过互联网更改代码的多种方法,最推荐forEach不是正确的处理方式,应该使用forEach代替,但是当我这样做时,我似乎无法理解没错。

l.forEach(function(element) {

    var j = element['fullTextAnnotation']['text'];   
    var sd = 'SDN. BHD.';
    var bd = 'BHD.';
    var et = 'Enterprise'; 
    var inc = 'Incorporated'; 

    var regtoken = new natural.RegexpTokenizer({pattern:/\n/});
    var f = regtoken.tokenize(jsondata);   

for(o = 0 ; o < f.length; o++){
    var arrayline1 = natural.LevenshteinDistance(sd,f[o],{search:true});
    var arrayline2 = natural.LevenshteinDistance(bd,f[o],{search:true});
    var arrayline3 = natural.LevenshteinDistance(et,f[o],{search:true});
    var arrayline4 = natural.LevenshteinDistance(inc,f[o],{search:true});
    var arrayline5 = natural.LevenshteinDistance(nf,f[o],{search:false});

    var onedata1 = arrayline1['substring'];
    var onedata2 = arrayline2['substring'];
    var onedata3 = arrayline3['substring'];
    var onedata4 = arrayline4['substring'];
    var onedata5 = arrayline5['substring'];

    if (onedata1 === sd)
    {
        tokends = f[o];            
        break;
    } else if(onedata3 === et)

    {
        tokends = f[o];
        break;

    } else if(onedata2 === bd) 

    {
        tokends = f[o];
        console.log(tokends);
        break;

    } else if(onedata4 === inc)

    {
        tokends = f[o];
        console.log(tokends);
        break;

    } else{

       console.log("Not Found");
       return false;    
    }  

}

}); 

我希望为else语句仅获得一个“未找到”输出,而不是将其循环20次以上。希望我能对此问题有所了解。谢谢。

1 个答案:

答案 0 :(得分:0)

您实际上是在使用.forEach数组的方法,该方法实际上在参数中带有一个函数。

键盘return实际上中断了当前执行的函数的循环。

例如:

const data = ['Toto', 'Tata', 'Titi'];

data.forEach(function(element) {
    console.log(element);
    if (element === 'Tata') {
        return false;
    }
});

// Will print everything :
// Print Toto
// Print Tata 
// Print Titi

for (let element of data) {
    console.log(element);
    if (element === 'Tata') {
        return false;
    }
}
// Will print :
// Print Toto
// Print Tata