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 全部通用
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2417508.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!