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

hantools 常用函数

hantools 常用函数

描述

这是一个工具库,如果有用户使用, 请用户自行检验

文档地址

https://blog.csdn.net/u012258564/article/details/148332621?spm=1011.2415.3001.5331

git 地址

https://gitee.com/hanhanker/hantools.git

安装教程

npm i hantools --save

使用说明

具体的方法请进入 src 文件内查看

  1. arrFun 数组处理
  2. dateFun 日期处理
  3. mathFun 数字处理
  4. calcFun 计算处理
  5. objFun 对象处理
  6. storeFun 存储处理
  7. stringFun 字符串处理

文档

数组处理

函数名用法结果描述
isArrayisArray([])true判断是否是一个数组
arrChunkarrChunk([1,2,3,4], 2)[[1,2]], [3,4]]将数组进行切分
参数二: 默认为true, 每个切分的数量
arrCompactarrCompact([1, 2, 3, 4, 0, null, undefined])[1, 2, 3, 4, 0]数组去除假值 null undefined ‘’
参数二: 默认为true, 不把0去除
arrUniquearrUnique([1, 2, 3, 4, 0, 3, null, undefined])[[1, 2, 3, 4, 0, null, undefined]]数组去重
arrUniqueProparrUniqueProp([{id: 1}, {id: 2}, {id: 1}],id)[{id: 1}]数组去重,根据某个属性
参数二: 默认为id, 根据id去重
arrSortarrSort([1, 2, 3, 4, 0, 3, null, undefined])[[1, 2, 3, 4, 0, null, undefined]]数组排序
参数二: 默认为’asc’, 正序排序;‘desc’: 倒序
arrObjSortarrObjSort([{ id: 1 }, { id: 2 }, { id: 3 }, { id: 0 }, { id: -1 }], ‘id’)[{“id”: -1}, {“id”: 0}, {“id”: 1}, {“id”: 2}, {“id”: 3}]数组中根据对象组成的数组根据某个属性排序
参数二:排序的属性
参数三: 默认为’asc’, 正序排序;‘desc’: 倒序
convertToTreeconvertToTree([{ id: 2, name: ‘Node 2’, value: 2, parentId: 1 },{ id: 3, name: ‘Node 3’, value: 3, parentId: 2 },{ id: 4, name: ‘Node 4’, value: 4, parentId: 3 },{ id: 5, name: ‘Node 5’, value: 5, parentId: 3 }], ‘id’, ‘parentId’, ‘’, ‘’)下面为返回值将扁平数组转换为树形对象
[{“children”: [{“children”: [{“id”: 4, “name”: “Node 4”, “parentId”: 3, “value”: 4}, {“id”: 5, “name”: “Node 5”, “parentId”: 3, “value”: 5}], “id”: 3, “name”: “Node 3”, “parentId”: 2, “value”: 3}], “id”: 2, “name”: “Node 2”, “parentId”: 1, “value”: 2}]
convertToFlatconvertToFlat([{id: 1, parentId: 0, name: ‘沃尔玛’, childrens: [{id: 2, parentId: 1, name: ‘生鲜区’, childrens: [{ id: 4, parentId: 2, name: ‘鱼’ },{ id: 5, parentId: 2, name: ‘牛肉’ }] }, {id: 3, parentId: 1, name: ‘日用品区’, childrens: [{ id: 6, parentId: 3, name: ‘卫生纸’ },{ id: 7, parentId: 3, name: ‘牙刷’ } ] }]}])下面为返回值树形转扁平
[{“id”: 4, “name”: “鱼”, “parentId”: 2}, {“id”: 5, “name”: “牛肉”, “parentId”: 2}, {“id”: 2, “name”: “生鲜区”, “parentId”: 1}, {“id”: 6, “name”: “卫生纸”, “parentId”: 3}, {“id”: 7, “name”: “牙刷”, “parentId”: 3}, {“id”: 3, “name”: “日用品区”, “parentId”: 1}, {“id”: 1, “name”: “沃尔玛”, “parentId”: 0}]注意字段名

日期处理

函数名用法结果描述
orgDateorgDate(new Date())“2025-05-30”日期形成标准的 format 例如:“yyyy/MM/dd” ‘yyyy-MM-dd HH:mm:ss’
参数二:返回格式
getDategetDate(new Date())“2025-05-30”日期形成标准的yyyy-MM-dd;上面第二个参数传yyyy-MM-dd,快捷方式
getDateTimegetDateTime(new Date())“2025-05-30 10:11:12”日期时间形成标准的 format ‘yyyy-MM-dd HH:mm:ss'
getTimestampgetTimestamp()1748575624271获取时间戳
参数一:时间格式
compareDatecompareDate(new Date(), ‘2021-01-01’)1比较2个日期的大小
返回值 0:相等;1:结束日期 大于 开始日期;-1:结束日期 小于 开始日期
getDateDiffDaygetDateDiffDay(‘2025-01-06’, ‘2026-02-01’)391`返回相距的天数
getNextDategetNextDate(‘2025-01-06’, 10)“2025-01-16”获取几天前、几天后的时间
参数三:返回的时间格式;默认yyyy-MM-dd
getBetweenDategetBetweenDate(‘2025-01-06’, ‘2025-01-10’)[“2025-01-06”, “2025-01-07”, “2025-01-08”, “2025-01-09”, “2025-01-10”]获得两个日期之间所有的日期
getMonthDategetMonthDate(‘2025-05’)[“2025-05-01”, “2025-05-31”]获取某个日期第一天和最后一天
getLastDategetLastDate(-1)[“2025-05-01”, “2025-05-31”]获取当前日期往后或往前天数的月份的第一天和最后一天
getOneYearPastDategetOneYearPastDate(new Date(), ‘yyyy-MM-dd’, 2)“2027-05-29”获取某个日期几年后的前一天的日期(例子是跨度2年)
参数二:返回的格式
参数三:n年后
getMaxDategetMaxDate([‘2022-01-05’, ‘2025-05-30’, ‘2021-01-09’], ‘max’)‘2025-05-30’获取一个时间数组里 最大/最小的时间
参数二: ‘max’ / ‘min’
isLeapYearisLeapYear(‘2025’)false判断是否为闰年
getMonthDaysgetMonthDays(‘2025-05’)31判断某月多少天

数字处理

函数名用法结果描述
numberFormatnumberFormat(129099388.838, 2, ‘.’, ‘,’)‘129,099,388.84’格式化的数字
参数一:要格式化的数字
参数二:保留几位小数
参数三:小数位符号
参数四:千数位符号
numberFormat2numberFormat2(129099388.838)’129,099,388.84‘上面方法的保留2位的快捷写法
floatToPercentfloatToPercent(0.15)’15%‘浮点数转为对应的百分比
参数二:默认true, 返回值带%
floatToPercentpercentToFloat(15)0.15百分比转为对应的浮点数
传参兼容’15%’
removeDecimalZeroremoveDecimalZero(13.230)‘13.23’去掉尾部的0
convertCurrencyconvertCurrency()“壹仟贰佰叁拾肆亿伍仟陆佰柒拾捌万玖仟零伍拾伍元玖角捌分柒毫陆厘”把金额转为大写
toWantoWan(1234567.890)123.46数字单位转为万
toThousandtoThousand(1234567.890)1234.57数字单位转为千位
is0is0(‘0’)true验证是否是0
isNumberisNumber(1)true验证是否是数字
isEmptyNot0isEmptyNot0(null)true验证是否是null, undefined, 空字符串
isEqualisEqual(1,‘1.0’)true判断两个数字是否相等(考虑浮点数精度问题)`

计算处理

函数名用法结果描述
stripstrip(0.09999999999999998)0.1精度取值
plusplus(0.1, 0.2,0.3)0.6加法;可多个值相加
minusminus(1.0, 0.9)0.1减法;可多个值相减
timestimes(0.362, 100)36.2乘法;可多个值相乘
dividedivide(1.21, 1.1)1.1除法;可多个值相除
roundround(0.105, 2)0.11保留小数位

对象处理

函数名用法结果描述
deepClone深拷贝
isObjectisObject(null)false判断是否是一个对象
validObjvalidObj({ a: 1, b: null }, [‘b’])false判断对象里面的属性是否为空
属性b是空的,所以返回false
isEmptyObjisEmptyObj(null)true判断是否是空
null,undefined, ''返回true
{},[]返回true
mergeObjmergeObj({ a: null, b: { a: 3 } }, { c: 2 }){“a”: null, “b”: {“a”: 3}, “c”: 2}合并两个对象
参数三:是否把合并里未空的字段删除,防止覆盖;默认:false
delNullAttrdelNullAttr({ a: null, b: { a: 3, c: ‘’ } }){“b”: {“a”: 3}}删除对象中为空的属性(不包括空数组和空对象)
debounceFun函数防抖
参数一:函数;
参数二:延迟执行毫秒数;
参数三:是否立即执行;默认true
throttleFun函数节流
参数一:函数
参数二:延迟执行毫秒数
参数三:使用表时间戳,在时间段开始的时候触发 false 使用表定时器,在时间段结束的时候触发;默认为true

存储处理

函数名用法结果描述
setStoresetStore(‘key’, ‘content’)设置localStorage
参数二:可传递对象/字符串/数字
getStoregetStore(‘key’)获取localStorage
removeStoreremoveStore(‘key’)删除localStorage
clearStoreclearStore()清除所有localStorage
setStoreSessionsetStoreSession(‘key’,‘content’)设置sessionStorage,下同
getStoreSessiongetStoreSession(‘key’)获取sessionStorage
removeStoreSessionremoveStoreSession(‘key’)删除sessionStorage
clearStoreSessionclearStoreSession()清除所有sessionStorage

字符串处理

函数名用法结果描述
isStringisString(‘abc’)true是否是字符串
strReversestrReverse(‘abc’)‘cba’字符串反转
strTrimstrTrim(’ ccdd ')ccdd字符串去除左右空格
randomStringrandomString(8, false)获取随机字符串
参数一:字符串长度
参数二:是否添加时间戳
getURLParamsgetURLParams(‘?key=123&from=detail’){“from”: “detail”, “key”: “123”}把url变为一个对象
getObjUrlgetObjUrl({“from”: “detail”, “key”: “123”})“from=detail&key=123”把对象生成一个url
testIdCardtestIdCard(‘123’)false判断是否是一个身份证
countStrToBitcountStrToBit(‘中国’)4计算字符串中的字符数

介绍

本项目基于 git 项目二次开发
https://github.com/xiaomingplus/npm-typescript-boilerplate
感谢大佬 xiaomingplus

针对计算公式,作者担心能力不足,于是整体引入了
number-precision
作者:github.com/nefe/number-precision
文档: https://www.npmjs.com/package/number-precision/v/1.6.0?activeTab=versions

项目优势

集合了下面几个工具库中最常用的函数
npm install dayjs
npm install lodash
npm install qs
npm i merge

作者

hanker
hancuiyang@163.com

http://www.xdnf.cn/news/10214.html

相关文章:

  • 第二代IndoorLink头戴式无线讲解器,远距+动感,更好用了
  • 数据交易场景的数据质量评估
  • 权限分配不合理如何影响企业运营?
  • 企业数字化转型的7个难点
  • 共享签名是什么
  • 【Docker 从入门到实战全攻略(一):核心概念 + 命令详解 + 部署案例】
  • If possible, you should set the HttpOnly flag for these cookies 修复方案
  • RCU stall 异常卡住问题
  • GESP】C++一级考试大纲知识点梳理(1)
  • 深入理解 Uvicorn Workers:FastAPI 与 ASGI 应用的并发利器
  • 推荐系统排序指标:MRR、MAP和NDCG
  • 一、虚拟货币概述
  • PCIe— Legacy PCI
  • STL_stack和queue(deque priority_queue)
  • 第8讲、Odoo 18 ORM 深度解析
  • AI数字人系统开发——引领未来智能交互潮流
  • C++面试题:Linux系统信号详解
  • Postgre数据库分区生产实战
  • Obsidian 社区插件下载修复
  • 随笔20250530 C# 整合 IC卡读写技术解析与实现
  • LangChain表达式(LCEL)实操案例1
  • C++智能指针介绍和区别(std::unique_ptr、std::shared_ptr 和 std::weak_ptr)
  • 004时装购物系统技术解析:构建智能时尚消费平台
  • PRECICE 工具介绍与使用示例
  • 7.atlas安装
  • 5.30 打卡
  • 【计算机网络】fork()+exec()创建新进程(僵尸进程及孤儿进程)
  • Day40
  • RFID赋能零件智能夹取新生态
  • 深度学习全面掌握指南