最近在学前端开发,发现经常要做数据合并、表单验证这种重复活儿。网上有开源工具库utils-lan,封装了59个常用方法,能省不少功夫。安装方式有两种,npm安装或者直接下载源码,用的时候引入到项目里就行。类名设计还算直观,比如arrJudge一看就是判断数组的。
数组操作方面有并集交集这些基础功能,arrAndSet能合并两个数组但不重复,arrDifference算差集。处理对象数组的话,用arrTwoToArrObj把两个数组转成键值对。求数组总和直接arrSum,最大值找arrMax,去重用arrRemoveRepeat。验证方法也有不少,比如checkTelphone能检查手机号格式,checkEmail看邮箱对不对。字符串处理包括trim、大小写转换,时间戳转日期格式这些常见需求都有现成函数。
涉及到浏览器环境时,checkBrowser能区分内核,判断是不是微信或UC浏览器也有对应方法。存储功能分local storage、session storage和cookie,setExpire这种带过期时间的存取方法挺实用。防抖节流用在搜索输入框这类场景能减少请求次数,throttle控制触发频率也很方便。
最近做电商项目时用上arrObjSum算购物车总价,发现比手写reduce代码块多了。用objDeepClone拷贝对象时要注意特殊类型可能存不下。存储用户token时,设置五分钟过期时间用sessionStorageSetExpire比自己写定时器靠谱。验证用户输入用checkChineseNumberLettter能拦住特殊字符,比正则自己写快多了。
时间处理函数里YyMmDdToTimes能把"2024-03-20"转时间戳,对比两个日期大小直接调compareTimeOneLessTwo。获取当前时间格式化成"yyyy-mm-dd hh:mm:ss"用getYyMmDdHhMmSs,虽然命名有点长但确实好用。字符串替换strReplace全局替换时要加g修饰符,不然只能换第一个匹配项。
这些工具方法也不是万能的,比如对象深克隆会漏掉函数类型属性,存数组到localStorage得先转JSON.stringify。不过大部分日常需求都能覆盖,比每次都重新写代码快不少。现在项目里遇到重复逻辑直接用库里函数,调试错误的时间明显少了。有空可以去GitHub上star个支持,说不定哪天就需要新功能呢。