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!这非常有帮助。