我有这个功能,例如:
app.get('/', function(req, res) {
var token = req.query.token;
if(!token) {
res.render('auth'); // Authentication
} else {
authorizedUsers.forEach(function(user) {
if(user.id == token) {
console.log('found, nickname: ' + user.nickname);
return true;
}
});
console.log('not found');
return false;
}
});
基本上它循环遍历authorizedUsers
数组,并查找entry.id
等于token
变量的条目。
我想要做的是,如果找到,则返回true并停止执行app.get('/')...
块的其余部分。
如果没有找到,显然forEach循环已经遍历了所有条目,并且最终执行到达"未找到"和return false;
。
对于我当前的代码,即使找到了一个条目,执行仍然继续,我仍然得到“未找到”#39;登录。
我错过了什么吗?
为了简化事情,我想做的是:
谢谢。
修改
按照迈克尔的解决方案,这是我的工作代码:
app.get('/', function(req, res) {
var token = req.query.token;
if(!token) {
res.render('auth'); // Authentication
} else {
if(!authorizedUsers.some(function(user) {
if(user.id == token)
return true;
})) {
console.log('No entries found.');
} else {
console.log('Entries found!');
}
}
});
答案 0 :(得分:4)
您可以使用Array.prototype.some
:
let retry = SKSpriteNode(imageNamed: "button_retry_up")
retry.name = StickHeroGameSceneChildName.RetryButtonName.rawValue
retry.position = CGPointMake(0, -180)
node.addChild(retry)
let newButton = SKSpriteNode(imageNamed: "button_games_up")
newButton.name = StickHeroGameSceneChildName.GamesButtonName.rawValue
newButton.position = CGPointMake(0, -360)
node.addChild(newButton)
authorizedUsers.some(function(user) { return user.id == token; }
方法测试数组中的某个元素是否通过了由提供的函数实现的测试。
答案 1 :(得分:0)
除非内部代码抛出异常,否则forEach
函数不会被中断。
所以你可以做this
之类的事情或者让它运行所有记录,执行以下操作:
var found = false;
authorizedUsers.forEach(function(user) {
if(user.id == token) found = true;
});
console.log('found? ', found);