首页 > 解决方案 > 如何在对象数组中查找对象?

问题描述

这是我在 Node 中的代码:

即使对象是同一个对象,结果也将始终为“否”。我尝试使用“==”和相同的答案 - “否”

  const recipe = await getRecipes(req.params.id); \\ID
  let user = await User.findById(req.user._id); \\ user
  user.recipes.forEach((item) => {

    console.log(item._id); \\ 5f196683308447452cd2c018
    console.log(recipe._id); \\ 5f196683308447452cd2c018
    
    if (item._id === recipe._id) {
      console.log("yes");
    } else {
      console.log("no");
    }
  });
});  ```

标签: node.jsexpress

解决方案


它不断输出“否”,因为您正在比较 2 个不同的 Mongo ObjectId 对象。

例如,console.log({a:1} === {a:1})是错误的,因为它们是 2 个不同的对象。

如果你真的想通过 ObjectId 检查,你可以这样做:

item._id.toString() === recipe._id.toString()


推荐阅读