当前位置: 首页 > article >正文

50个 filter相关的公共函数

这里给你50 个纯 JS、Vue3 通用、可直接复制使用的filter 过滤工具函数覆盖业务 99% 场景包含基础过滤、搜索、数组、对象、时间、真假值、去重、区间、正则、树形、空值、多条件等。全部即拿即用不依赖任何库50 个 Filter 过滤函数完整版一、基础相等 / 不等// 1. 等于constfilterEq(arr,k,v)arr.filter(ii[k]v)// 2. 不等于constfilterNeq(arr,k,v)arr.filter(ii[k]!v)// 3. 全等于严格constfilterStrictEq(arr,k,v)arr.filter(ii[k]v)// 4. 非严格相等constfilterLooseEq(arr,k,v)arr.filter(ii[k]v)二、大小 / 区间// 5. 大于constfilterGt(arr,k,n)arr.filter(ii[k]n)// 6. 大于等于constfilterGte(arr,k,n)arr.filter(ii[k]n)// 7. 小于constfilterLt(arr,k,n)arr.filter(ii[k]n)// 8. 小于等于constfilterLte(arr,k,n)arr.filter(ii[k]n)// 9. 区间 [min, max]constfilterBetween(arr,k,min,max)arr.filter(ii[k]mini[k]max)// 10. 排除区间constfilterOutRange(arr,k,min,max)arr.filter(ii[k]min||i[k]max)三、字符串搜索// 11. 包含字符串constfilterIncludes(arr,k,s)arr.filter(i(i[k]||).includes(s))// 12. 不包含字符串constfilterExcludes(arr,k,s)arr.filter(i!(i[k]||).includes(s))// 13. 开头匹配constfilterStartsWith(arr,k,s)arr.filter(i(i[k]||).startsWith(s))// 14. 结尾匹配constfilterEndsWith(arr,k,s)arr.filter(i(i[k]||).endsWith(s))// 15. 忽略大小写包含constfilterIncludesIgnoreCase(arr,k,s)arr.filter(i(i[k]||).toLowerCase().includes(s.toLowerCase()))// 16. 长度等于constfilterStrLenEq(arr,k,len)arr.filter(i(i[k]||).lengthlen)// 17. 长度大于constfilterStrLenGt(arr,k,len)arr.filter(i(i[k]||).lengthlen)四、数组包含关系// 18. 在数组中 inconstfilterIn(arr,k,list)arr.filter(ilist.includes(i[k]))// 19. 不在数组中 not inconstfilterNotIn(arr,k,list)arr.filter(i!list.includes(i[k]))// 20. 包含子项数组字段包含某个值constfilterArrHas(arr,k,val)arr.filter(i(i[k]||[]).includes(val))// 21. 不包含子项constfilterArrNotHas(arr,k,val)arr.filter(i!(i[k]||[]).includes(val))// 22. 数组长度等于constfilterArrLenEq(arr,k,len)arr.filter(i(i[k]||[]).lengthlen)五、真假值 / 空值过滤// 23. 过滤真值constfilterTruthyarrarr.filter(Boolean)// 24. 过滤假值constfilterFalsyarrarr.filter(i!i)// 25. 过滤非空constfilterNotNullarrarr.filter(ii!null)// 26. 过滤空字符串constfilterNotEmptyStrarrarr.filter(ii!)// 27. 过滤 undefinedconstfilterNotUndefinedarrarr.filter(ii!undefined)// 28. 过滤 nullconstfilterNotNullValarrarr.filter(ii!null)// 29. 过滤空对象 {}constfilterNotEmptyObjarrarr.filter(i!(itypeofiobjectObject.keys(i).length0))// 30. 过滤空数组 []constfilterNotEmptyArrayarrarr.filter(i!Array.isArray(i)||i.length0)六、去重过滤// 31. 基础去重constfilterUniquearrarr.filter((v,i,self)self.indexOf(v)i)// 32. 根据对象字段去重constfilterUniqueByKey(arr,k)arr.filter((v,i,self)self.findIndex(jj[k]v[k])i)// 33. 多字段组合去重constfilterUniqueByKeys(arr,keys)arr.filter((v,i,self)self.findIndex(jkeys.every(kj[k]v[k]))i)七、正则过滤// 34. 正则匹配constfilterRegExp(arr,k,reg)arr.filter(ireg.test(i[k]||))// 35. 纯数字constfilterOnlyNumberarrarr.filter(i/^\d$/.test(i))// 36. 纯字母constfilterOnlyLetterarrarr.filter(i/^[a-zA-Z]$/.test(i))// 37. 邮箱格式constfilterEmailarrarr.filter(i/^..\..$/.test(i))// 38. 手机号constfilterPhonearrarr.filter(i/^1[3-9]\d{9}$/.test(i))八、时间过滤// 39. 今天之前constfilterBeforeToday(arr,k)arr.filter(inewDate(i[k])newDate(newDate().setHours(0,0,0,0)))// 40. 今天之后constfilterAfterToday(arr,k)arr.filter(inewDate(i[k])newDate())// 41. 时间在区间内constfilterTimeBetween(arr,k,start,end)arr.filter(inewDate(i[k])newDate(start)newDate(i[k])newDate(end))九、类型过滤// 42. 只保留字符串constfilterIsStringarrarr.filter(itypeofistring)// 43. 只保留数字constfilterIsNumberarrarr.filter(itypeofinumber!isNaN(i))// 44. 只保留布尔constfilterIsBooleanarrarr.filter(itypeofiboolean)// 45. 只保留对象constfilterIsObjectarrarr.filter(itypeofiobjecti!null)十、高级组合过滤// 46. 多条件 AND 过滤constfilterAnd(arr,conditions)arr.filter(iObject.entries(conditions).every(([k,v])i[k]v))// 47. 多条件 OR 过滤constfilterOr(arr,conditions)arr.filter(iObject.entries(conditions).some(([k,v])i[k]v))// 48. 自定义函数过滤constfilterByFn(arr,fn)arr.filter(fn)// 49. 过滤树形数据递归constfilterTree(tree,fn)tree.filter(fn).map(i({...i,children:filterTree(i.children||[],fn)}))// 50. 关键字全局搜索搜索所有字段constfilterSearchAll(arr,keyword)arr.filter(iObject.values(i).some(vString(v).toLowerCase().includes(keyword.toLowerCase()))) 直接导出成工具文件可直接用新建utils/filter.jsexportconst{filterEq,filterNeq,filterStrictEq,filterLooseEq,filterGt,filterGte,filterLt,filterLte,filterBetween,filterOutRange,filterIncludes,filterExcludes,filterStartsWith,filterEndsWith,filterIncludesIgnoreCase,filterStrLenEq,filterStrLenGt,filterIn,filterNotIn,filterArrHas,filterArrNotHas,filterArrLenEq,filterTruthy,filterFalsy,filterNotNull,filterNotEmptyStr,filterNotUndefined,filterNotNullVal,filterNotEmptyObj,filterNotEmptyArray,filterUnique,filterUniqueByKey,filterUniqueByKeys,filterRegExp,filterOnlyNumber,filterOnlyLetter,filterEmail,filterPhone,filterBeforeToday,filterAfterToday,filterTimeBetween,filterIsString,filterIsNumber,filterIsBoolean,filterIsObject,filterAnd,filterOr,filterByFn,filterTree,filterSearchAll}{// 把上面 50 个函数全部粘贴进来}✅ 使用示例Vue3 中import{filterIncludes,filterBetween,filterSearchAll}from/utils/filterconstlist[{name:Vue,age:3},{name:React,age:5}]// 模糊搜索constres1filterIncludes(list,name,Vue)// 年龄区间constres2filterBetween(list,age,2,4)// 全局搜索所有字段constres3filterSearchAll(list,3)总结这50 个 filter 函数覆盖相等/区间/包含/排除字符串/数组/空值/去重正则/时间/类型树形/多条件/全局搜索Vue2 / Vue3 / React / 原生 JS 全部通用

相关文章:

50个 filter相关的公共函数

这里给你50 个纯 JS、Vue3 通用、可直接复制使用的 filter 过滤工具函数,覆盖业务 99% 场景,包含:基础过滤、搜索、数组、对象、时间、真假值、去重、区间、正则、树形、空值、多条件等。 全部即拿即用,不依赖任何库!5…...

ABAQUS有限元分析软件在隧道开挖模型中的应用:从CD法到CRD法、台阶法、双侧壁导坑法、环...

abaqus隧道CD法开挖,CD法开挖模型,step by step,过程演示;abaqus隧道CRD法开挖模型,abaqus隧道台阶法开挖,abaqus隧道双侧壁导坑法开挖,abaqus隧道环形开挖预留核心土法开挖,模型&am…...

Spring全局异常处理拦截器JWT令牌使用

一、全局异常处理使用步骤step1:创建异常处理器类注意:要确保能扫描到异常处理器类| RestControllerAdvice用于标识当前类为REST风格对应的异常处理器 ExceptionHandler(Exception.class)标识处理哪些异常RestControllerAdvice public class ProjectExce…...

手把手教你学Simulink——基于Simulink的滞环电压控制(Bang-Bang)Buck仿真

目录 手把手教你学Simulink ——基于Simulink的滞环电压控制(Bang-Bang)Buck仿真 一、问题背景 二、Buck 电路与滞环控制原理 1. Buck 主电路 2. 滞环控制逻辑 三、Simulink 建模步骤 第一步:搭建 Buck 主电路(使用 Simscape Electrical) 第二步:实现滞环控制器 …...

聊聊 GitHub CLI,以及我为什么不再手动配 SSH 了

传统认证方式到底哪里难受? 说实话,在接触 gh 之前,我一直觉得 GitHub 的认证这块挺烦的。不是说它不能用,而是用起来总有点别扭。 先说用 HTTPS 加令牌这条路。GitHub 要求你去网页端生成一串很长的字符串,复制下来&a…...

RHEL9.7虚拟机部署及后续优化

一、搭建环境前的准备工作首先在搭建环境前将安装包提前解压到电脑D:\RHCSA文件夹(一定不要下载到C盘!!!)二、创建新的虚拟机二、RHEL后续优化从阅读模式进入编辑者模式从编辑模式退回阅读模式按ESC键并按住shift:输入…...

前沿科技一——5G/6G

一、概念 1、5G:万物互联的基石 (1)定义与特点: 5G,即第五代移动通信技术,具有高速率、低时延和大连接的特点。它实现了多种新型无线接入的状态,是真正意义上的通信技术与互联网的融合。 &a…...

手把手教你学Simulink——基于Simulink的主从式多机器人协同搬运控制仿真

目录 手把手教你学Simulink ——基于Simulink的主从式多机器人协同搬运控制仿真 一、问题背景 二、系统建模基础 1. 协同搬运系统结构 2. 运动学约束 3. 动力学耦合 三、主从式控制架构设计 1. 主机器人控制律(阻抗控制) 2. 从机器人控制律(导纳控制) 四、Simuli…...

南北阁Nanbeige 4.1-3B行业方案:数据库课程设计智能辅导系统

南北阁Nanbeige 4.1-3B行业方案:数据库课程设计智能辅导系统 1. 引言:当课程设计遇上AI,会发生什么? 如果你是计算机专业的学生,大概率逃不过“数据库课程设计”这门课。我还记得当年自己做的那个“学生信息管理系统…...

乐高兼容ESP32对讲机:模块化嵌入式音频通信设计

1. 项目概述乐高兼容积木对讲机是一个面向教育与趣味交互场景的嵌入式音频通信系统,其核心设计目标是将专业级无线语音通信能力封装为可拼搭、可扩展、可定制的模块化硬件平台。该项目并非传统意义上的消费级对讲设备,而是一种融合了硬件工程实践、音频信…...

霜儿-汉服-造相Z-Turbo开发环境配置:从零开始搭建Python与PyTorch环境

霜儿-汉服-造相Z-Turbo开发环境配置:从零开始搭建Python与PyTorch环境 想自己动手研究“霜儿-汉服-造相Z-Turbo”这类AI模型的源码,或者想基于它做些二次开发,第一步也是最关键的一步,就是搭建一个稳定、兼容的开发环境。很多朋友…...

springboot基于网络爬虫的热门图书推荐系统

🍅 作者主页:Selina .a 🍅 简介:Java领域优质创作者🏆、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作。 主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据…...

springboot基于人脸识别的互联网课堂考勤系统

🍅 作者主页:Selina .a 🍅 简介:Java领域优质创作者🏆、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作。 主要内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据…...

Qwen2.5-VL-7B-Instruct新手入门:从安装到第一个图文对话

Qwen2.5-VL-7B-Instruct新手入门:从安装到第一个图文对话 1. 环境准备与快速部署 1.1 硬件要求 Qwen2.5-VL-7B-Instruct是专为RTX 4090显卡优化的多模态大模型,需要满足以下硬件条件: 显卡:NVIDIA RTX 4090(24GB显…...

AudioSeal Pixel Studio代码实例:Python调用PyTorch实现水印生成与识别

AudioSeal Pixel Studio代码实例:Python调用PyTorch实现水印生成与识别 1. 音频水印技术概述 音频数字水印技术是一种将特定信息嵌入到音频信号中的技术,这些信息对人类听觉系统几乎不可感知,但可以通过专用算法检测提取。AudioSeal是Meta(…...

MT5 Zero-Shot参数组合实验报告:Temperature×Top-P对中文长句改写成功率影响

MT5 Zero-Shot参数组合实验报告:TemperatureTop-P对中文长句改写成功率影响 1. 引言 你有没有遇到过这种情况:手里有一批中文文本数据,想用来训练一个模型,但数据量太少,模型总是学不好?或者,…...

Pi0 Web界面效果实测:并发用户数压力测试(1/5/10用户响应性能曲线)

Pi0 Web界面效果实测:并发用户数压力测试(1/5/10用户响应性能曲线) 1. 引言:为什么需要关注Web界面的并发性能? 如果你正在评估或使用Pi0机器人控制模型的Web演示界面,一个很实际的问题可能会浮现在脑海&…...

Qwen2.5-72B部署教程:基于vLLM的GPU算力优化与显存压缩技巧

Qwen2.5-72B部署教程:基于vLLM的GPU算力优化与显存压缩技巧 1. 模型简介 Qwen2.5-72B-Instruct-GPTQ-Int4是通义千问大模型系列的最新版本,作为72B参数规模的指令调优模型,它在多个方面实现了显著提升: 知识量与能力增强&#…...

YOLO11新手实战:跟着步骤完成第一个目标检测项目

YOLO11新手实战:跟着步骤完成第一个目标检测项目 1. 项目介绍与环境准备 1.1 YOLO11简介 YOLO11是当前最先进的目标检测算法之一,以其快速、准确的特点在计算机视觉领域广受欢迎。这个镜像提供了完整的YOLO11运行环境,包含所有必要的依赖项…...

Wan2.1-umt5在创意写作中的突破:生成连贯长篇故事与复杂人物对话

Wan2.1-umt5在创意写作中的突破:生成连贯长篇故事与复杂人物对话 你有没有想过,让AI帮你写一个完整的故事?不是那种几百字的片段,而是有开头、有发展、有高潮、有结局,人物还会自己对话的长篇故事。听起来像是科幻小说…...

Qwen3.5-35B-A3B-AWQ-4bit多模态应用:建筑设计图规范审查、施工进度图比对、BIM模型截图理解

Qwen3.5-35B-A3B-AWQ-4bit多模态应用:建筑设计图规范审查、施工进度图比对、BIM模型截图理解 1. 多模态模型在建筑行业的创新应用 建筑行业正经历数字化转型的关键时期,传统的人工图纸审查和施工管理方式面临效率瓶颈。Qwen3.5-35B-A3B-AWQ-4bit作为先…...

Qwen3.5-27B部署实录:4090D四卡环境从裸机到7860端口可用全程记录

Qwen3.5-27B部署实录:4090D四卡环境从裸机到7860端口可用全程记录 1. 环境准备与硬件配置 1.1 硬件要求 在开始部署Qwen3.5-27B模型前,我们需要确保硬件环境满足最低要求: GPU配置:4张NVIDIA RTX 4090 D显卡(每张2…...

Stable-Diffusion-V1-5 超分辨率输出测试:探索模型生成4K及以上分辨率图像的极限

Stable-Diffusion-V1-5 超分辨率输出测试:探索模型生成4K及以上分辨率图像的极限 最近在玩Stable Diffusion的时候,我脑子里总冒出一个念头:这模型生成512x512或者768x768的图是挺溜的,但要是我想整一张能当壁纸的4K大图&#xf…...

比迪丽LoRA模型C语言基础拓展:轻量级SDK封装与调用演示

比迪丽LoRA模型C语言基础拓展:轻量级SDK封装与调用演示 1. 引言 如果你是一位嵌入式或者系统级的开发者,平时打交道最多的可能就是C语言,对Python那一套生态可能感觉有点距离。现在有个AI模型,比如一个能生成特定风格图片的比迪…...

串口调试助手(CM野人版)4.0内存数据滞留Bug分析与临时解决方案

1. 串口调试助手(CM野人版)4.0内存数据滞留Bug详解 最近在嵌入式开发圈里,不少同行都在讨论CM野人版串口调试助手4.0的一个奇怪现象。我自己在做STM32项目时也遇到了同样的问题:明明已经修改了程序代码,重新烧录后串口输出的却还是旧数据。刚…...

JetBrains Rider 进阶实战:从高效编码到深度集成

1. 为什么Unity开发者需要JetBrains Rider 如果你正在使用Unity开发游戏,可能已经习惯了Visual Studio作为默认的代码编辑器。但我要告诉你,JetBrains Rider绝对是值得尝试的替代方案。作为一个长期使用Rider进行Unity开发的程序员,我发现它在…...

Janus-Pro-7B内网穿透部署方案:在无公网IP服务器上提供AI服务

Janus-Pro-7B内网穿透部署方案:在无公网IP服务器上提供AI服务 1. 引言 很多朋友在本地服务器上部署了Janus-Pro-7B这样强大的AI模型,想把它做成一个API服务,让外部的应用或者同事也能调用。但问题来了:服务器在公司内网或者家里…...

LiuJuan Z-Image Generator案例实测:手机拍摄低清图→AI超分+人像重绘全流程

LiuJuan Z-Image Generator案例实测:手机拍摄低清图→AI超分人像重绘全流程 1. 引言:从模糊到高清,AI如何重塑你的照片? 你有没有遇到过这种情况?手机抓拍到一个特别有感觉的瞬间,但照片放大一看&#xf…...

具身智能:如何让机器人成为你“信得过”的伙伴?

具身智能:如何让机器人成为你“信得过”的伙伴? 引言 从工厂里的协作机械臂到家庭中的陪护机器人,具身智能正从实验室走向我们的生活。然而,要让人类真正接纳并与这些拥有“身体”的AI并肩工作,信任是必须跨越的鸿沟。…...

Unity Vuforia + ZXing 实现高效二维码识别与交互

1. 为什么选择Unity Vuforia ZXing组合 在AR应用开发中,二维码识别是个高频需求。我尝试过多种方案后,发现Unity Vuforia ZXing的组合在识别效率和开发便捷性上表现突出。Vuforia作为老牌AR开发框架,提供了稳定的图像捕捉能力;而…...