Другое заявление не останавливает цикл NodeJS - PullRequest
0 голосов
/ 04 июня 2019

Я работал над этим кодом, чтобы прочитать PDF-файл, найти ключевые слова и названия компаний и отобразить их. Все работает нормально, за исключением одной части, где оператор else if выводит одну строку (это то, что я хочу), но оператор else, который идет последним, который должен выводить циклы "Not Found" 20 раз, где я только хочу, чтобы он отображался вывод только один раз вместо 20 раз.

Я пробовал многочисленные способы, перебирая Интернет, чтобы изменить свой код, наиболее рекомендую, чтобы 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;    
    }  

}

}); 

Я хочу получить только один вывод "Not Found" для оператора else, а не зацикливать его 20 раз. Надеюсь, я смогу понять эту проблему. Спасибо.

1 Ответ

0 голосов
/ 04 июня 2019

Вы фактически используете метод .forEach Array, который фактически принимает функцию в параметре.

Клавиатура 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...