用函数代替 lodash 来进行匹配

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


猜你喜欢

  • JavaScript代码是什么?

    JavaScript是一种基于对象和事件驱动的脚本语言,广泛应用于Web开发中。它可以在Web浏览器中运行,并且可以与HTML和CSS进行交互,以实现动态效果和用户交互。

    7 年前
  • 前端技术文章:热重装和加载本地ReactJS的区别

    在web开发中,前端框架和库的选择非常重要。ReactJS是一个流行的JavaScript库,为构建可复用组件的应用程序提供了强大的支持。当开发人员使用ReactJS时,他们将面临许多问题,例如如何实...

    7 年前
  • 通过JavaScript动态创建无级连字符串的JSON对象

    在前端开发中,经常需要使用JSON格式的数据进行数据交换和存储。而有时候我们需要根据特定的需求动态创建JSON对象,其中包含无级连字符串的结构。本文将介绍如何通过JavaScript来实现这个过程。

    7 年前
  • 从零配置Webpack4.0搭建一个React工程

    在前端开发中,Webpack是一个非常重要的构建工具。它可以将多个模块打包成一个或多个文件,并且支持各种不同的加载器和插件,使得代码的编译、打包、压缩等工作变得更加简单和高效。

    7 年前
  • 梳理下浏览器对象模型知识(BOM)

    浏览器对象模型 (Browser Object Model, BOM) 是指浏览器提供的一组对象,用于访问和操作浏览器窗口以及与之相关的文档、历史记录等信息。本文将对 BOM 的常用对象及其方法进行详...

    7 年前
  • 构造函数、原型与原型链

    在JavaScript中,每个对象都有一个[[Prototype]]内部属性,它指向另一个对象,该对象称为原型。每个构造函数(除Object以外)都有一个prototype属性,其中包含一个指向构造函...

    7 年前
  • Rematch 一个更好用的 Redux

    Rematch: 一个更好用的 Redux Redux 是前端状态管理中最常用的库之一,但是它的学习曲线有些陡峭,使用起来也比较繁琐。Rematch 就是为了解决这个问题而产生的,它是一个基于 Red...

    7 年前
  • 嵌套的JSON对象——我必须使用数组吗?

    在前端开发过程中,处理JSON数据是非常常见的任务。有时候,我们会遇到嵌套的JSON对象,也就是JSON对象中又包含了其他的JSON对象或者JSON数组。对于这种情况,很多人会问:我必须使用数组吗?本...

    7 年前
  • JavaScript OOP NodeJS: 怎么了?

    在Node.js中使用JavaScript时,面向对象编程(OOP)是一个强大且关键的概念。 OOP允许将代码组织成可重用和可扩展的模块,从而增强代码的可读性和可维护性。

    7 年前
  • 在REST API访问控制中允许起始头

    什么是起始头? 起始头(Origin Header)是在 HTTP 请求头里传输的一个字段,它包含了请求源的信息。通常情况下,它被用于实现跨来源资源共享(CORS)。

    7 年前
  • 上传前如何预览图像,获得文件大小,图像高度和宽度?

    在前端开发中,我们经常需要实现图片上传的功能。而在上传前,我们通常需要对图片进行预览,并获取其文件大小、高度和宽度等信息。本文将介绍如何实现这些功能。 文件预览 在上传之前,我们通常需要对用户选择的图...

    7 年前
  • 停止表单中的输入字段

    在前端开发中,我们经常需要控制用户是否能够对某些输入字段进行编辑,例如当表单处于特定状态时禁用输入等。本文将介绍如何使用 HTML 和 JavaScript 实现停止表单中的输入字段。

    7 年前
  • 在谷歌地图API V3中实现单窗口应用

    在Web开发中,为了提高用户体验,我们通常希望在web页面中使用单窗口模式。这意味着只有一个窗口在页面上,并且所有的内容都在其中加载和更新。谷歌地图API V3提供了这样的功能,让我们来看一下如何实现...

    7 年前
  • 如何声明一个类型为空在打字吗?

    在前端开发中,有时候我们需要声明一个变量的类型为空,即该变量不应该包含任何值。这种情况下,我们可以使用 TypeScript 中的 null 或 undefined 类型来表示。

    7 年前
  • 如何用CSS隐藏菜单中的选项

    在前端开发中,我们经常需要将一些选项或菜单项隐藏起来。本文将介绍如何使用CSS来实现这个功能。 为什么要隐藏菜单选项? 有时候,网站或应用程序可能会根据用户角色或权限控制显示不同的选项。

    7 年前
  • 检查jQuery是否使用JavaScript加载

    在前端开发中,jQuery 是非常常用的 JavaScript 库之一。但有时候我们需要确认 jQuery 是否是通过 JavaScript 加载的。这篇文章将介绍如何检查 jQuery 是否使用 J...

    7 年前
  • jQuery slideup() 方法详解

    简介 jQuery 是一个广泛使用的 JavaScript 库,它简化了 JavaScript 编程中的许多复杂操作,包括 DOM 操作、事件处理和动画效果等。其中的 slideup() 方法是用于将...

    7 年前
  • 在什么嵌套级别,组件应该从存储中读取实体?

    在前端开发中,我们通常需要处理各种不同的数据。有时候,这些数据来自于 API,有时候则是保存在本地存储中。当我们开发大型应用时,组件很容易变得非常复杂,这时候就需要考虑如何最好地从存储中读取实体数据。

    7 年前
  • 如何在JavaScript中从文件名字符串中提取扩展名?[重复]

    抱歉,我无法为您提供重复的内容。 ...

    7 年前
  • 通过 JavaScript 获得纯 HTML 的纯文本吗?

    在前端开发中,有时我们需要从 HTML 中提取纯文本信息,例如进行搜索、过滤、统计等操作。虽然可以手动复制粘贴,但若有大量的 HTML 内容需要处理,则显然不是一种高效的方式。

    7 年前

相关推荐

    暂无文章