执行else语句如果没有项目被发现

执行else语句如果没有项目被发现

问题描述:

我有这样的循环,我想执行其他的只如果没有的,如果条件得到满足循环。 for循环会一直运行,直到数据库中的每个项目都被检查完毕。如果数据库中没有任何项目匹配用户输入,那么我想运行其他。执行else语句如果没有项目被发现

眼下,它运行后其他权的第一次尝试,这意味着,如果该项目相匹配的是最后一排,它只是把它的错误页面,因为它停止在评价第一次迭代。

for(var i=0; i< rows.length; i++) { 

    if (rows[i].hashtag == userEnteredHashtag) { 
    // Display the choose Box page 
    res.render('chooseBox', {}); 
    } 


    else { 
    // Display the invalid hashtag page 
    res.render('invalidHashtag', {}); 
    } 
} 
+0

直接检查数据库是否容易? ({!返回o.hashtag == userEnteredHashtag} O =>) – adeneo

+0

没错,但我跑了一些问题,以及一些安全原因,我觉得这是更好的选择 – John

+0

anywho'rows.every;' – adeneo

只需推动else部分循环之外,它基于标记

var wasFound = false; 
for (var i = 0; i < rows.length; i++) { 

    if (rows[i].hashtag == userEnteredHashtag) { 
    // ... 
    wasFound = true; // set the flag here 
    } 
} 

if (!wasFound) { 
    res.render('invalidHashtag', {}); 
} 

所以外面添加一个检查执行。

var hasMatch = false; 
for (var i = 0; i < rows.length; i++) { 

    if (rows[i].hashtag == userEnteredHashtag) { 
    // Display the choose Box page 
    res.render('chooseBox', {}); 
    hasMatch = true; 
    } 
} 

if (!hasMatch) { 
    // Display the invalid hashtag page 
    res.render('invalidHashtag', {}); 
} 

创建一个变量来跟踪你的条件是否已经满足:

var isValid = true; 
    for(var i=0; i< rows.length; i++) { 
     if (rows[i].hashtag != userEnteredHashtag) { 
     isValid = false 
     } 
    } 
    isValid ? res.render('chooseBox') : res.render('invalidHashtag') 

另一种方法是使用filterforEach

var rows = [{hashtag: '#a'}, {hashtag: 'b'}, {hashtag: 'c'}]; 
var userEnteredHashTag = '#a'; 
var matchingRows = rows.filter(row => row.hashtag === userEnteredHashTag); 

if (matchingRows.length) { 
    matchingRows.forEach(row => console.log(row)); 
} else { 
    console.log('invalid'); 
}