如果找不到任何项目,则执行else语句

时间:2016-08-11 18:45:40

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

我有这个for循环,我想只在没有满足if条件的情况下才在for循环中执行else。 for循环一直运行,直到检查了数据库中的每个项目。如果数据库中没有任何项与用户输入匹配,那么我想运行else。

现在,它在第一次尝试后立即运行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', {});
  }
}

4 个答案:

答案 0 :(得分:2)

只需将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', {});
}

答案 1 :(得分:1)

所以在外面加一张支票。

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', {});
}

答案 2 :(得分:1)

创建一个变量来跟踪您的条件是否得到满足:

    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')

答案 3 :(得分:1)

另一种方法是使用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'); 
}