执行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', {});
}
}
答
只需推动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')
答
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');
}
直接检查数据库是否容易? ({!返回o.hashtag == userEnteredHashtag} O =>) – adeneo
没错,但我跑了一些问题,以及一些安全原因,我觉得这是更好的选择 – John
anywho'rows.every;' – adeneo