如何使用 Lodash 检查对象是否在集合中

阅读时长 4 分钟读完

在前端开发中,经常需要检查一个对象是否存在于一个集合中。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

纠错
反馈