0.0.18 • Published 5 months ago
sd-js-utils v0.0.18
js 常用工具
方法介绍
一, Object
1. 是否为空
/**
* 判断是否为空
* @param obj 任何类型的对象
* @returns 是否为空
*/
export const isEmpty = function (obj)
2. 是否不为空
/**
* 是否不为空
* @param {*} obj
* @returns
*/
export const isNotEmpty = function (obj)
3. 通用类型判断
/**
* 通用类型判断
* @param {*} data 数据
* @param {String} typeStr 类型字符串 如: 'Number' / 'String' / 'Boolean' / 'Null' / 'Undefined' / 'Symbol' / 'Object' / 'Array' / 'Function' / 'Date' ...
* @returns
*/
export const isType = function (data, typeStr)
4. 获取类型
/**
* 获取类型字符串
* @param {*} data
* @returns 类型字符串
*/
export const typeOf = function (data)
5. 判断对象中是否存在某个属性
/**
* 判断对象中是否存在某个属性
* @param {*} obj
* @param {*} prop
* @returns
*/
export const has = function (obj, prop)
6. 浅拷贝
/**
* 浅拷贝
* @param {*} obj 要拷贝的值
* @returns 拷贝后的值
*/
export const clone = function (obj)
7. 深拷贝
/**
* 深拷贝
* @param {*} obj 要拷贝的值
* @returns 拷贝后的值
*/
export const cloneDeep = function (obj)
8. 比较任何类型的对象是否相同
/**
* 比较任何类型的对象是否相同
* @param {*} a 对象1
* @param {*} b 对象2
* @returns 是否相同
*/
export const equals = function (a, b)
9. 数组列表转树形结构
/**
* 数组列表转树形结构
* @param {Array} items 数组列表
* @param {String} parentId 父id字段名(默认: parentId )
* @param {String} childName 子列表字段名(默认: children)
* @returns 树形结构
*/
export const listToTree = function (items, parentId = "parentId", childName = "children")
10. 树形结构转扁平数组列表
/**
* 树形结构转扁平数组列表
* @param {*} data 树形结构数据
* @param {*} childName 子列表字段名(默认: children)
* @returns 数组列表
*/
export const treeToList = function (data, childName = "children")
二, String
1. 生成uuid
/**
* 生成uuid
* @returns uuid
*/
export const uuid = function ()
2.生成指定长度的随机字符串
/**
* 生成随机字符串
* @param {Number} length 长度(默认16)
* @param {string} charSet 指定字符集(默认ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789)
* @returns 随机字符串
*/
export const randomStr = function (length = 16, charSet = null)
3.转换任何内容为字符串
/**
* 转换任何内容为字符串
* @param {*} data 要转换的内容
* @returns 字符串
*/
export const toString = function (data)
4. 将手机号格式化,中间4位以 * 号代替
/**
* 将手机号格式化,中间4位以 * 号代替
* @param phone 11位手机号
* @returns xxx****xxxx
*/
export const phoneToStar = function (phone)
5. 获取浏览器名称
/**
* 获取浏览器名称
* @returns 浏览器名称
*/
export const browserName = function ()
6. 复制到剪切板
/**
* 复制到剪切板
* @param {*} text 要复制的内容
*/
export const copyToClipboard = function (text)
7. 图片文件转为base64字符串
/**
* 图片文件转为base64字符串
* @param {File} imgFile 图片文件
* @param {Function} callback 回调结果
*/
export const imgToBase64 = function (imgFile, callback)
三, Number
1. 生成指定范围、指定小数位数的随机数
/**
* 生成指定范围、指定小数位数的随机数
* @param {Number} minNum 最小值
* @param {Number} maxNum 最大值
* @param {Number} decimalNum 小数点后几位
* @returns 结果
*/
export const randomNum = (minNum, maxNum, decimalNum)
2.转换 value 为一个数字
/**
* 转换 value 为一个数字
* @param {*} value 要处理的值
* @returns 返回数字
*/
export const toNumber = function(value)
3.转换 value 为一个整数
/**
* 转换 value 为一个整数
* @param {*} value 要处理的值
* @returns 返回整数
*/
export const toInteger = function(value)
4.根据指定精度 四舍五入
/**
* 根据指定精度 四舍五入
* @param {*} value 要四舍五入的数字
* @param {*} precision 四舍五入的精度
* @returns 返回四舍五入的数字
*/
export const round = (value, precision = 0)
5.将金额转为中文大写 xx元xx角xx分
/**
* 将金额转为中文大写 xx元xx角xx分
* @param {Number | String} money 金额
* @returns 中文金额
*/
export const numToChinese = function (money)
6.两数相加
/**
* 两数相加
* @param {String | Number} num1 数字1
* @param {String | Number} num2 数字2
* @returns 结果
*/
export const calcAdd = function (num1, num2)
7.两数相减
/**
* 两数相减
* @param {String | Number} num1 数字1
* @param {String | Number} num2 数字2
* @returns 结果
*/
export const calcSub = function (num1, num2)
8.两数相乘
/**
* 两数相乘
* @param {String | Number} num1 数字1
* @param {String | Number} num2 数字2
* @returns 结果
*/
export const calcMult = function (num1, num2)
9.两数相除
/**
* 两数相除
* @param {String | Number} num1 数字1
* @param {String | Number} num2 数字2
* @returns 结果
*/
export const calcDiv = function (num1, num2)
10. 数字格式化(金额格式化)
/** 数字格式化(金额格式化)
* @param num 要格式化的数字
* @param digit 保留几位小数(值为 0 时四舍五入)
* @param pointSign 小数点符号(默认 .)
* @param thousandSign 千分位符号(默认 ,)
* @returns {string} 结果 如: 123,456.90
*/
export const formatNum = function (num = 0, digit = 2, pointSign = ".", thousandSign = ",")
11. 移除数字格式化
/** 移除数字格式化
* @param e 目标内容 如 123,456.90
* @returns {number} 结果 如 123456.90
*/
export const removeFormatNum = function (e)
四, 正则
1. 是否为身份证号
/**
* 是否为身份证号
* @param {String} card 号码
* @returns 真假
*/
export const isCardno = card
2. 是否为手机号
/**
* 是否为手机号
* @param {String} phone 手机号
* @returns 真假
*/
export const isPhoneNo = phone
3. 邮箱的校验
/**
* 邮箱的校验
* @param {String} str 邮箱字符串
* @returns 真假
*/
export const isEmail = str
4. URL的校验
/**
* URL的校验
* @param {String} str url字符串
* @returns 真假
*/
export const isUrl = str
5. 是否为整数
/**
* 是否为整数
* @param {*} str 要判断的值
* @returns 真假
*/
export const isInteger = str
6. 是否为小数
/**
* 是否为小数
* @param {*} str 要判断的值
* @returns 真假
*/
export const isDecimal = str
7. 用户名校验 4到16位(字母,数字,下划线,减号)
/**
* 用户名校验 4到16位(字母,数字,下划线,减号)
* @param {*} str 要判断的值
* @returns 真假
*/
export const isUsername = str
8. 密码强度的校验 最少 min 位,最多 max 位, 包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
/**
* 密码强度的校验 最少 min 位,最多 max 位, 包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
* @param {*} str 要判断的值
* @param {*} min 最小位数(默认6)
* @param {*} max 最大位数(默认30)
* @returns 真假
*/
export const isPassword = (str, min = 6, max = 30)
9. 是否包含中文
/**
* 是否包含中文
* @param {*} str 要判断的值
* @returns 真假
*/
export const isHasCN = str
10. 车牌号校验
/**
* 车牌号校验
* @param {*} str 要判断的值
* @returns 真假
*/
export const isCarNo = str
11. 验证统一社会信用代码
/**
* 验证统一社会信用代码
* @param {String} socialCode 被验证代码
* @returns 结果
*/
export const isSocialCode = function (socialCode)
五, Function
1. 防抖
/**
* 防抖
* @param {Function} fn 需要防抖的函数
* @param {Number} delay 延迟时间(默认1000毫秒)
* @returns 防抖函数
*/
export const debance = function (fn, delay = 1000)
2. 节流
/**
* 节流
* @param {*} fn 需要节流的函数
* @param {*} delay 延迟时间(默认1000毫秒)
* @returns 节流函数
*/
export const throttle = function (fn, delay = 1000)
3. 滚动到元素顶部
/**
* 滚动到元素顶部
* @param {*} element dom元素
*/
export const scrollToTop = function (element)
4. 滚动到元素底部
/**
* 滚动到元素底部
* @param {*} element dom元素
*/
export const scrollToBottom = function (element)
5. 获取url中的指定参数值
/**
* 获取url中的指定参数值
* @param {String} key 参数名
* @param {String} url url地址(可选)
*/
export const getParamByUrl = function (key, url = null)
6. 进入全屏
/**
* 进入全屏
* @param {*} el 要全屏的dom元素(默认整个浏览器)
*/
export const fullScreen = function (el)
7. 退出全屏
/**
* 退出全屏
*/
export const exitFullScreen = function ()
六, Date
1. 格式化年月日 yyyy-mm-dd
/**
* 格式化年月日 yyyy-mm-dd
* @param {*} date 要格式化的日期(默认当前时间)
* @param {*} format 日期格式(默认YYYY-MM-DD)
* @returns yyyy-mm-dd
*/
export const yyyymmdd = (date = undefined, format = "YYYY-MM-DD")
2. 格式化年月日 YYYY-MM-DD HH:mm:ss
/**
* 格式化年月日 YYYY-MM-DD HH:mm:ss
* @param {*} date 要格式化的日期(默认当前时间)
* @param {*} format 日期格式(默认YYYY-MM-DD HH:mm:ss)
* @returns yyyy-mm-dd
*/
export const yyyymmddhhmmss = (date = undefined, format = "YYYY-MM-DD HH:mm:ss")
3. 获取时间戳(秒)
/**
* 获取时间戳(秒)
* @param {*} date 时间
* @returns 时间戳
*/
export const timeStamp = function (date)
4. 获取时间戳(毫秒)
/**
* 获取时间戳(毫秒)
* @param {*} date 时间
* @returns 时间戳
*/
export const timeStampms = function (date)
5. 时间戳转为格式化后的时间字符串
/**
* 时间戳转为格式化后的时间字符串
* @param {*} timeStamp 时间戳
* @param {String} format 日期格式(默认 YYYY-MM-DD HH:mm:ss)
* @returns 时间字符串
*/
export const parseTimeStamp = function (timeStamp, format = "YYYY-MM-DD HH:mm:ss")
6. 格式化现在距${endTime}的剩余时间
/**
* 格式化现在距${endTime}的剩余时间
* @param {Date} endTime 大于等于当前时间的日期
* @return xx天xx小时xx分钟xx秒
*/
export const remainTime = function (endTime)
7. 格式化${startTime}距现在的已过时间
/**
* 格式化${startTime}距现在的已过时间
* @param {Date} startTime 时间
* @return {String} xx年前 / xx个月前 / xx天前 / xx小时前 / xx分钟前 / 刚刚
*/
export const passTime = function (startTime)
8. 时间个性化输出功能
/**
* 时间个性化输出功能
* @ 1、< 60s, 显示为“刚刚”
* @ 2、>= 1min && < 60 min, 显示与当前时间差“XX分钟前”
* @ 3、>= 60min && < 1day, 显示与当前时间差“今天 XX:XX”
* @ 4、>= 1day && < 1year, 显示日期“XX月XX日 XX:XX”
* @ 5、>= 1year, 显示具体日期“XXXX年XX月XX日 XX:XX”
* @param time 时间
* @returns 结果
*/
export const passTime2 = function (time)
9. 是否为今天
/**
* 是否为今天
* @param {*} value 日期
* @returns 结果
*/
export const isToday = function (value)
七, 加密解密
1. BASE64加密
/**
* BASE64加密
* @param {String} str 要加密的字符串
* @returns 加密结果
*/
export const base64Encode = function (str)
2. BASE64解密
/**
* BASE64解密
* @param {String} str 要解密的字符串
* @returns 解密结果
*/
export const base64Decode = function (str)
3. md5加密
/**
* md5加密
* @param {*} str 要加密的字符串
* @returns 加密结果
*/
export const md5 = function (str)
八, Color
1. rgb颜色转rgba颜色
/**
* rgb颜色转rgba颜色
* @param {String} rgbStr rgb颜色字符串
* @param {String | Number} alpha 透明度 0-1
* @returns rgba颜色
*/
export const rgbToRgba = (rgbStr, alpha)
2. rgba转rgb
/**
* rgba转rgb
* @param {String} rgbaStr rgba颜色
* @returns rgb颜色
*/
export const rgbaToRgb = rgbaStr
3. 获取rgba颜色的透明度
/**
* 获取rgba颜色的透明度
* @param {String} color rgba颜色
* @returns 透明度
*/
export const getRgbaAlp = color
九, File
1. 后端返回二进制文件流, 通过api名称,下载文件
/**
* 后端返回二进制文件流, 通过api名称,下载文件
* @param {String} api api名 如 /api/download
* @param {*} params 请求参数 如 {id: 1}
* @param {String} fileName 文件名
* @param {String} method 请求方式(默认get)
*/
export const downloadFile = (api, params, fileName, method = "get")
2. 文件上传请求
/**
* 文件上传请求
* @param {String} api api名 如 /api/upload
* @param {*} params 请求参数 如 {file: raw, id: 1}
* @returns Promise对象
*/
export const uploadFile = function (api, params)
3. 根据文件url 进行下载
/**
* 根据文件url 进行下载
* @param {String} url 文件url
*/
export const downloadUrl = function (url)
十, Device
1. 是否为iOS设备
/**
* 是否为iOS设备
* @returns 结果
*/
export const isIOS = function ()
2. 是否为安卓设备
/**
* 是否为安卓设备
* @returns 结果
*/
export const isAndroid = function ()
3. 是否为ie浏览器
/**
* 是否为ie浏览器
* @returns 结果
*/
export const isIE = function ()
4. 是否为ie9浏览器
/**
* 是否为ie9浏览器
* @returns 结果
*/
export const isIE9 = function ()
5. 是否为edge浏览器
/**
* 是否为edge浏览器
* @returns 结果
*/
export const isEdge = function ()
6. 是否为Google Chrome浏览器
/**
* 是否为Google Chrome浏览器
* @returns 结果
*/
export const isChrome = function ()
7. 是否为电脑端
/**
* 是否为电脑端
* @returns 结果
*/
export const isPC = function ()
8. 是否为手机端
/**
* 是否为手机端
* @returns 结果
*/
export const isPhone = function ()
使用
安装
npm i sd-js-utils --save
用法
import utils from 'sd-js-utils';
// 或
const utils = require("sd-js-utils");
示例
const person = {
name: 'john',
age: 20,
}
utils.has(person, 'name'); //true