# chive-utils **Repository Path**: cangnaiwen/chive-utils ## Basic Information - **Project Name**: chive-utils - **Description**: 一个工具类 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-17 - **Last Updated**: 2024-08-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # chive-utils 本工具库是我的一些小工具,目前仅包括一些常用的工具函数,以及一些常用的正则表达式。后面会持续更新。 ## 安装 - **npm 地址**: [chive-utils](https://www.npmjs.com/package/chive-utils) ```bash npm install chive-utils ``` ## tools的使用 | 函数名 | 参数 | 描述 | | --- | --- | --- | | sleep | `ms` | 传入毫秒数,延迟执行后续方法 | | getParamsType | `params` | 获取参数类型如`string`、`number`、`object`、`array`、`function`、`null`、`undefined`等 | | cutStr | `str`, `len` | 截取字符串返回指定长度的字符串,超出部分用省略号代替 | | debounce | `fn`, `delay` | 防抖函数:持续触发时,在传入的毫秒内只会执行最一次的函数调用,一直延迟到不触发为止 | | throttle | `fn`, `delay` | 节流函数:持续触发时,在传入的毫秒内只会执行第一次的函数调用,超过该时间才会执行第二次的函数调用 | | shallowCopy | `target` | 浅拷贝:只会复制对象的`第一层属性`,而对象内部的`引用类型`属性仍然指向原对象的`内部数据`。 | | deepCopy | `target` | 深拷贝:深拷贝会`递归`地复制对象的`所有层级`,使得新对象与原对象`完全隔离`,不存在引用共享。 | | flatten | `arr` | 数组扁平化 | 示例: ```javascript import { tools } from 'chive-utils' tools.sleep(1000).then(() => {}) tools.getParamsType(20) tools.cutStr('bjvjadsasdasd', 5) // 防抖节流 tools.debounce(() => {}, 300) tools.throttle(() => {}, 300) // 浅拷贝 深拷贝 const obj = { age: 30, children: [ { age: 3 } ] } tools.shallowCopy(obj) tools.deepCopy(obj) // 数组扁平化 tools.flatten([ 1, 2, [ 3, 4, [ 5, 6 ] ] ]) ``` ## validate的使用 | 函数名 | 参数 | 描述 | | --- | --- | --- | | validate | `rule`, `value` | 支持传入正则和值进行校验,返回`true/false` | 示例: ```javascript import { validatorReg, validate } from "chive-utils"; validate(validatorReg.isPhoneNumber, value); ``` ## validatorReg的使用 | 属性 | 描述 | | --- | --- | | `isEmail` | 校验邮箱 | | `isPhoneNumber` | 手机号码验证 | | `isTelNumber` | 固定电话号码验证 | | `isIdCard` | 身份证号码验证 | | `isBankCard` | 银行卡号 | | `isZHCNUserName` | 大陆居民姓名验证 | | `isEmoJi` | 表情验证 | | `isHighPassword` | 8-16位由数字字母或英文特殊字符(三者都要有)的密码校验 | | `isPassword` | 由数字字母英文特殊字符任意组合的密码校验 | | `isNumber` | 匹配正整数 | | `isNumberWithZero` | 匹配整数 | `validatorReg` 是正则匹配,可以直接使用。 ## 数据结构使用 ### Stack 类 | 方法 | 描述 | | --- | --- | | `push(element)` | 向栈中添加元素 | | `pop` | 从栈中移除元素并返回 | | `peek` | 查看栈顶元素但不移除 | | `isEmpty` | 检查栈是否为空 | | `size` | 获取栈的大小 | | `clear` | 清空栈 | 示例: ```javascript import { Stack } from "chive-utils"; const stack = new Stack(); stack.push(1); stack.push(2); stack.push(3); console.log(stack.pop()); // 输出: 3 console.log(stack.peek()); // 输出: 2 console.log(stack.isEmpty()); // 输出: false console.log(stack.size()); // 输出: 2 ``` ### Queue 类 | 方法 | 描述 | | --- | --- | | `enqueue(element)` | 入队操作,将元素添加到队列的末尾 | | `dequeue` | 出队操作,移除队列的第一个元素并返回它 | | `front` | 查看队列的第一个元素 | | `isEmpty` | 检查队列是否为空 | | `size` | 获取队列的大小 | | `clear` | 清空队列 | | `print` | 打印队列中的元素 | 示例: ```javascript // 使用Queue类 const queue = new Queue(); queue.enqueue(1); queue.enqueue(2); queue.enqueue(3); queue.print(); // 输出: 1,2,3 console.log(queue.dequeue()); // 输出: 1 queue.print(); // 输出: 2,3 ```