【问题标题】:Logical comparison returns false for two equal values对于两个相等的值,逻辑比较返回 false
【发布时间】:2017-09-21 07:29:57
【问题描述】:

所以我试图在我的 MongoDB 中比较两个 _id。我使用逻辑运算符=== 来比较它们。两个值相同,但它返回 false,这让我抓狂。

有人知道可能出了什么问题吗?

谢谢

【问题讨论】:

  • 代码在哪里?你在谈论什么样的价值观?
  • 如果没有看到实际代码,我们将无法帮助您。 === 适用于实际上相同的两个值,因此显然您要么滥用了某些东西,要么您的两个值不一样。如果您显示实际代码和值,我们只能为您提供帮助。
  • 2882bdj3728ccc39===2882bdj3728ccc39 ,这些是 MongoDB 对象 id 。理论上它应该返回 true ,但事实并非如此。
  • 那么 JavaScript 环境并没有被破坏,所以你所做的一些假设是错误的。如果比较返回false,则值不相等。 发布您的代码。

标签: javascript node.js mongodb


【解决方案1】:

这是因为 _id 实际上具有 ObjectId 类型。为了比较两个ObjectId,你应该使用equals method。或者,您可以使用 toString 方法将两者都“转换”为字符串。

【讨论】:

  • 非常感谢,问题解决了!干杯!
【解决方案2】:

Ids 具有相同类型的值?字符串、整数等...?

只是尝试比较你的值,不要像==运算符那样检查类型

【讨论】:

    【解决方案3】:

    三重等于=== 或(严格等于)执行深度相等性检查。

    两个操作数必须是精确的类型才能return true,否则将返回false,不应用类型强制。

    如果您确定它们相等但 return false 这意味着您可能在无意识地应用类型强制。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多