用函数代替 lodash 来进行匹配

阅读时长 3 分钟读完

在前端开发中,我们经常需要对数组或对象进行筛选、查找等操作。很多开发者习惯于使用 Lodash 的函数库来完成这些任务,因为 Lodash 提供了许多强大而方便的工具函数。

但是,在某些情况下,我们可能并不需要引入整个 Lodash 库,只是想要使用其中的某个函数来完成特定的操作。那么,有没有一种更轻量级的方式来实现这个目标呢?

答案是肯定的。在本文中,我们将介绍一个函数 findMatches,它可以帮助我们像 Lodash 的 filter 函数一样进行筛选和查找。

函数定义

-- -------------------- ---- -------
-------- ------------------ ------ -
  ------ --------------------------- -
    --- ---- --- -- ----- -
      -- ------------------------- -- ----------------------------------- --- --- -
        ------ -----
      -
    -
    ------ ------
  ---
-
展开代码

这个函数接受两个参数:一个数组 items 和一个字符串 query。它的作用是返回一个新数组,该数组包含了在原始数组中所有属性值中包含查询字符串的项。

函数实现解析

首先,使用 filter 函数对原始数组进行遍历,对每个元素进行检查。

对于每个元素内部,使用 for...in 循环遍历其所有属性,检查它们是否包含查询字符串。为了防止遍历到原型链上的属性,使用 hasOwnProperty 方法进行检查。

对于每个属性值,将其转换为字符串并使用 indexOf 函数查找查询字符串是否存在其中。如果存在,则返回 true,表示该元素应该被保留在结果数组中。否则,继续检查下一个属性。

最后,如果没有任何一个属性包含查询字符串,返回 false,表示该元素应该被过滤掉。

使用示例

-- -------------------- ---- -------
--- ----- - -
  - ----- -------- ---- --- ----- ---- ----- --
  - ----- ------ ---- --- ----- ---- ---------- --
  - ----- ---------- ---- --- ----- ---- -------- -
--

-- -------- -- ---
--- ----- - -----
--- ------ - ------------------ -------
--------------------
-- ----- ----- ------ ---- --- ----- ---- ---------- -- - ----- ---------- ---- --- ----- ---- -------- --
展开代码

在这个示例中,我们使用 findMatches 函数来查找年龄大于等于 30 岁的人。函数会返回一个新数组,其中包含了符合条件的两个元素。

总结

本文介绍了一个轻量级的函数 findMatches,它可以帮助我们在不引入 Lodash 库的情况下实现数组或对象的筛选和查找操作。

虽然这个函数可能不如 Lodash 的相关函数强大,但对于一些简单的需求,它是一个很好的替代品。我们可以根据自己的实际情况进行调整和修改,以满足特定的需求。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/13005

纠错
反馈

纠错反馈