【发布时间】:2022-02-11 20:48:06
【问题描述】:
我有一个简单的用例,以前可以在我的代码中使用,但是现在我不得不进行更改以适应我现在遇到的问题。希望深入了解为什么这种情况发生了变化,并且需要额外检查是否有人可以提供帮助。我的场景如前所述。
我有一个数组userBadgeIds,其中包含以下内容:[ new ObjectId("59f347fca0f50c0004b5a3ac") ]
我曾经执行以下操作:const exists = userBadgeIds.includes(badge._id) 运行良好,并告诉我输入 badge._id 是否在数组中。两者都是猫鼬ObjectId,因此以这种方式比较等效项似乎很完美(再次,它有效!)。
但是,无论出于何种原因,我现在必须按以下方式比较它们:
const exists = userBadgeIds.map(String).includes(badge._id.toString())
现在它又可以工作了。关于.includes 如何比较等价,或者我在比较ObjectId 特别是围绕ObjectId[] 时缺少什么?
【问题讨论】:
-
includes()使用严格等价,因此在对象的情况下,它们需要引用相同的对象才能被视为相等。
标签: javascript typescript mongodb mongoose