Javascript 数组搜索/查找循环

Javascript 数组搜索/查找循环,javascript,arrays,node.js,mongoose,Javascript,Arrays,Node.js,Mongoose,我目前有一个实现,它在json文档(从mongoose返回)中循环一个数组,并查找如下所示的特定项 因此,我正在请求头中传递一个id来表示,我需要做的是让它从故事中获取相关的故事.users.id.name。返回users数组,一旦它有了名称send,就对数组中的所有其他项执行操作 我确实尝试过这样做,如下所示: for (var i = 0; i < story.users.length; i++) { if (story.user

我目前有一个实现,它在json文档(从mongoose返回)中循环一个数组,并查找如下所示的特定项

因此,我正在请求头中传递一个
id
来表示,我需要做的是让它从
故事中获取相关的
故事.users.id.name
。返回users
数组,一旦它有了名称send,就对数组中的所有其他项执行操作

我确实尝试过这样做,如下所示:

            for (var i = 0; i < story.users.length; i++) {
                if (story.users[i].id._id == req.headers.id) {
                   var name = story.users[i].id.name
                } else {
                    push.apns(story.users[i].id._id, name + " started a new story");
                }
            } 
            for (var i = 0; i < story.users.length; i++) {
                if (story.users[i].id._id == req.headers.id) {
                    var name = story.users[i].id.name
                }
            };
            for (var i = 0; i < story.users.length; i++) {
                if (story.users[i].id._id == req.headers.id) {
                } else {
                    push.apns(story.users[i].id._id, name + " started a new story");
                }
            }

但必须有更好的方法来实现上述目标,而不是在数组中循环两次?

您所做的看起来是正确的解决方案(与您似乎拥有的目标一致)。没有真正简单的方法只做一个循环

不过,您可以让它更快、更干净:

var name; // this is just cleaner than to define it in the loop
for (var i = 0; i < story.users.length; i++) {
    if (story.users[i].id._id == req.headers.id) {
        name = story.users[i].id.name;
        break; // don't loop over the other elements
    }
};
for (var i = 0; i < story.users.length; i++) {
    if (story.users[i].id._id !== req.headers.id) {
        push.apns(story.users[i].id._id, name + " started a new story");
    }
}
var name;//这比在循环中定义它更简洁
for(var i=0;i
谢谢,我已经更新了我的代码,以配合这种更干净的方式