Javascript 返回函数内部的真或假,我有点困惑
我有这个功能,例如:Javascript 返回函数内部的真或假,我有点困惑,javascript,node.js,syntax,scope,return,Javascript,Node.js,Syntax,Scope,Return,我有这个功能,例如: 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) {
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循环已经遍历了所有条目,最终执行到“notfound”的打印和returnfalse代码>
对于我当前的代码,即使找到一个条目,执行仍在继续,我仍然会得到“未找到”日志。
我遗漏了什么吗
为了简化事情,我想做的是:
循环遍历所有authorizedUsers条目,将entry.id与令牌变量进行比较
如果找到,将“find”打印到控制台并停止执行
如果未找到,请在控制台上打印“未找到”,并停止
执行
多谢各位
编辑
按照Michael的解决方案,这是我的工作代码:
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!');
}
}
});
除非内部的代码引发异常,否则无法中断forEach
函数
所以你可以做如下的事情
或者让它运行在所有记录中,执行以下操作:
var found = false;
authorizedUsers.forEach(function(user) {
if(user.id == token) found = true;
});
console.log('found? ', found);
除非内部的代码引发异常,否则无法中断forEach函数 所以你可以做如下的事情 或者让它运行在所有记录中,执行以下操作:
var found = false;
authorizedUsers.forEach(function(user) {
if(user.id == token) found = true;
});
console.log('found? ', found);
您将为此使用:
authorizedUsers.some(function(user) {
return user.id == token;
}
some()
方法测试数组中的某个元素是否通过了所提供函数实现的测试
您将为此使用:
authorizedUsers.some(function(user) {
return user.id == token;
}
some()
方法测试数组中的某个元素是否通过了所提供函数实现的测试
中提琴!我觉得我有点不对劲,因为我曾经使用PHP Laravel很长一段时间,我的工作方式很有魅力。我知道有点不对劲。我对诺德很陌生。谢谢你的建议!中提琴!我觉得我有点不对劲,因为我曾经使用PHP Laravel很长一段时间,我的工作方式很有魅力。我知道有点不对劲。我对诺德很陌生。谢谢你的建议!谢谢,我会把这个作为答案。我还使用.some()编辑了我自己的问题和解决方案。非常感谢@Michael!这非常有帮助。谢谢,我会把这个作为答案。我还使用.some()编辑了我自己的问题和解决方案。非常感谢@Michael!这非常有帮助。