在前端开发中,我们经常需要对数组或对象进行筛选、查找等操作。很多开发者习惯于使用 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