我有这个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', {});
}
}
答案 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)
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');
}