在前端开发中,经常需要检查一个对象是否存在于一个集合中。Lodash 是一个流行的 JavaScript 工具库,提供了许多方便的函数来处理常见的集合操作,包括判断对象是否在集合中。
使用 Lodash 的 includes 函数
Lodash 提供了 includes
函数,用于检查值是否包含在集合中。它接受两个参数:集合和要检查的值。如果集合中包含该值,函数将返回 true,否则返回 false。
以下是一个示例代码,使用 includes
函数检查一个对象是否在一个数组中:
-- -------------------- ---- ------- ------ - -------- - ---- --------- ----- ----- - - - --- -- ----- ------- -- - --- -- ----- ----- -- - --- -- ----- --------- -- -- ----- ----------- - - --- -- ----- ----- -- -- ---------------- ------------- - ----------------- -- -- --- ------------- - ---- - ----------------- -- --- -- --- ------------- -
在上面的示例中,我们首先导入了 Lodash 的 includes
函数。然后定义一个包含三个用户对象的数组 users
和一个要检查的用户对象 userToCheck
。最后,我们调用 includes
函数,并使用 if...else
来输出结果。
比较对象引用
需要注意的是,includes
函数仅比较值而不比较对象的引用。也就是说,如果集合中包含一个与要检查的对象具有相同属性的新对象,includes
函数将返回 false。
-- -------------------- ---- ------- ------ - -------- - ---- --------- ----- ----- - - - --- -- ----- ------- -- - --- -- ----- ----- -- - --- -- ----- --------- -- -- ----- ----------- - - --- -- ----- ----- -- -- ---- ---- ------ ----- --------------------------- - --- -- ----- ----- ----
在上面的示例中,我们尝试使用与 userToCheck
具有相同属性的新对象调用 includes
函数,但结果为 false。
使用 Lodash 的 isEqual 函数
为了解决对象引用问题,Lodash 还提供了 isEqual
函数,用于深度比较两个对象是否相等。它递归地比较每个对象的值,并且只有当两个对象的属性和嵌套对象都相同时才返回 true。
以下是一个示例代码,使用 isEqual
函数来检查一个对象是否在一个数组中:
-- -------------------- ---- ------- ------ - ------- - ---- --------- ----- ----- - - - --- -- ----- ------- -- - --- -- ----- ----- -- - --- -- ----- --------- -- -- ----- ----------- - - --- -- ----- ----- -- -- ------------------ -- ------------- -------------- - ----------------- -- -- --- ------------- - ---- - ----------------- -- --- -- --- ------------- -
在上面的示例中,我们使用 some
函数遍历数组中的每个用户对象,并将其传递给 isEqual
函数进行比较。如果任何一个用户对象与要检查的用户对象相等,则返回 true。
结论
在前端开发中,经常需要检查对象是否存在于一个集合中。Lodash 提供了方便的函数来执行此操作。includes
函数可以检查值是否包含在集合中,但不适用于对象引用比较。为了解决这个问题,isEqual
函数可以深度比较两个对象是否相等。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/12290