我有这个功能,例如:

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;的打印。

对于我当前的代码,即使找到了条目,执行仍会继续,并且我仍然会收到“未找到”日志。
javascript - 返回内部函数的真假,我有些困惑-LMLPHP

我有什么想念的吗?

为了简化事情,我想做的是:


遍历所有authorizedUsers条目,将entry.id与令牌变量进行比较。
如果找到,则将“找到”打印到控制台并停止执行。
如果找不到,请在控制台上打印“找不到”,然后停止
执行。


谢谢。

编辑

按照迈克尔的解决方案,这是我的工作代码:

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!');
        }
    }
});

最佳答案

您将为此使用Array.prototype.some

authorizedUsers.some(function(user) {
    return user.id == token;
}



  some()方法测试数组中的某些元素是否通过了提供的功能实现的测试。

10-08 08:40