0.0.18 • Published 5 months ago

sd-js-utils v0.0.18

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

js 常用工具

toc

方法介绍

一, 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

git

gitee: https://gitee.com/zzzsssddd/sd-utils-js

0.0.18

5 months ago

0.0.17

5 months ago

0.0.16

5 months ago

0.0.15

5 months ago

0.0.14

5 months ago

0.0.13

5 months ago

0.0.12

5 months ago

0.0.11

5 months ago

0.0.1

5 months ago