0.0.42 • Published 2 days ago

scat-util v0.0.42

Weekly downloads
-
License
MIT
Repository
github
Last release
2 days ago

scat-util

utility tool function(BETA)

v0.0.42 更新日志

  • 优化 addUnit 参数
  • 优化 math.mulmath.multiply)、math.plusmath.add)、math.minusmath.substract)、math.divmath.division)参数,原函数传入两个数值改为传入无限多个数值

安装

npm install scat-util@latest

使用

default 整体引入

import ScatUtil from 'scat-util'

ScatUtil.valid(1)

部分函数引入

与 default 方式引入区别:scat + 函数名(函数名首字母大写)

import { scatValid } from 'scat-util'

scatValid(1)

校验值有效

函数名:validItem

参数:

参数名类型描述必填默认值
value任意类型需要校验的值-

返回:

返回类型描述
boolean值校验通过

使用:

validItem('')
// return false
validItem([])
// return false
validItem({})
// return false

进阶

函数名:valid ,支持同时校验多值

参数:

参数名类型描述必填默认值
args任意类型多参数需要校验的值 Array<any>-

返回:

返回类型描述
boolean全部值都校验通过

使用:

valid('', [], {})
// return false

数值加单位

函数名:addUnit

默认值取值规则:opt 类型为 JSONObject 时优先取 option.defaultValue,第三参数 defaultValue 优先级次之;opt 类型为 string 时取 第三参数 defaultValue

参数:

参数名类型描述必填默认值
valuenumber \| string数值-
optionstring \| OptionObject类型为 string 时识别为单位;类型为 JSONObject 时识别为配置-
defaultValuenumber \| string默认值(优先级低于 option.defaultValue)auto

OptionObject 配置:

参数名类型描述必填默认值
defaultValuenumber \| string可指定 value 缺省时的默认值-
unitstring添加到 value 末尾的单位px

返回:

返回类型描述
number \| string \| undefined结果

使用:

addUnit(3.1415, 'px')
// return '3.1415px'

数组、字符串拆分

命名空间:split

拆分字符串

函数名:split.str

参数:

参数名类型描述必填默认值
strstring目标字符串-
slicenumber片长-
optionOptionObject配置-

OptionObject 配置:

参数名类型描述必填默认值
fromHeadboolean从 list 第一位开始-
padStartstring分段头部填充字符-
padEndstring分段尾部填充字符-

返回:

返回类型描述
Array<any>结果

使用:

split.str('MyName', 2)
// return ['My', 'Na', 'me']

拆分数组

函数名:split.arr

参数:

参数名类型描述必填默认值
arrstring目标数组-
slicenumber片长-

返回:

返回类型描述
Array<any>结果

使用:

split.arr(['My', 'Na', 'me'], 2)
// return [['my', 'Na'], ['me']]

字符串相关

命名空间:str

头插占位字符串

函数名:str.padStart

参数:

参数名类型描述必填默认值
targetstring目标字符串-
numnumber \| string最小返回字符串字符长度-
fillStrstring占位字符串-

返回:

返回类型描述
string结果

使用:

str.padStart('MyName', 7, '*')
// return '*MyName'

尾插占位字符串

函数名:str.padEnd

参数:

参数名类型描述必填默认值
targetstring目标字符串-
numnumber \| string最小返回字符串字符长度-
fillStrstring占位字符串-

返回:

返回类型描述
string结果

使用:

str.padEnd('MyName', 7, '*')
// return 'MyName*'

首字母大写化

函数:str.initialToUpperCase

参数:

参数名类型描述必填默认值
strstring目标字符串-

返回:

返回类型描述
string结果

使用:

str.initialToUpperCase('asd')
// return 'Asd'

首字母小写化

函数:str.initialToLowerCase

参数:

参数名类型描述必填默认值
strstring目标字符串-

返回:

返回类型描述
string结果

使用:

str.initialToLowerCase('ASD')
// return 'aSD'

数组相关

命名空间:arr

去重

函数名:arr.dedup

参数:

参数名类型描述必填默认值
sourceArray<T>数组-

返回:

返回类型描述
Array<T>结果数组

使用:

arr.dedup([1, 1, 2, 3, 5])
// return [1, 2, 3, 5]

排序并反转

函数名:arr.sortAndReverse

参数:

参数名类型描述必填默认值
sourceArray<T>数组-
sortFn(arg1: any, arg2?: any) => any自定义排序回调-

返回:

返回类型描述
Array<T>结果数组

使用:

arr.sortAndReverse([1, 4, 3, 5], (a, b) => a - b)
// return [5, 4, 3, 1]

数组 A 是 B 的子集(A ⊆ B)

函数名:arr.contain

参数:

参数名类型描述必填默认值
sourceArray<T>数组-
targetArray<T>数组-

返回:

返回类型描述
booleantarget 是否 source 的子集

使用:

arr.contain([1, 1, 2, 3, 5], [3, 5])
// return true

求数组 A,B,C,...的并集(A ∪ B ∪ C ...)

函数名:arr.union

参数:

参数名类型描述必填默认值
argsArray<Array<T>>可填多数组-

返回:

返回类型描述
Array<T>-

使用:

arr.union([1, 2], [3, 4], [5, 6])
// return [1, 2, 3, 4, 5, 6]

求数组 A,B,C,...的交集(A ∩ B ∩ C ...)

函数名:arr.overlap

参数:

参数名类型描述必填默认值
argsArray<Array<T>>可填多数组-

返回:

返回类型描述
Array<T>-

使用:

arr.overlap([1, 2, 3], [3, 4], [3, 5, 6])
// return [3]

根据数组 A ,求数组 B 的补集(CuA)

函数名:arr.addition

参数:

参数名类型描述必填默认值
sourceArray<T>数组-
targetArray<T>数组-

返回:

返回类型描述
boolean根据全集 source ,求 target 的补集

使用:

arr.addition([1, 1, 2, 3, 5], [1])
// return [2, 3, 5]

求数组 A 相对于数组 B 的差集(A - B)

函数名:arr.differ

参数:

参数名类型描述必填默认值
sourceArray<T>数组-
targetArray<T>数组-

返回:

返回类型描述
booleansource 中与 target 不重合项组成的新集合

使用:

arr.differ([1, 1, 2, 3, 5], [1, 1, 2])
// return [3, 5]

求数组 A 相对于数组 B 的对称差集((A - B) + (B - A))

函数名:arr.symdiffer

参数:

参数名类型描述必填默认值
sourceArray<T>数组-
targetArray<T>数组-

返回:

返回类型描述
booleansourcetarget 互为不重合项组成的新集合

使用:

arr.symdiffer([1, 1, 2, 3, 5], [1, 2, 4])
// return [3, 4, 5]

数学计算相关

命名空间:math

浮点数相乘

函数名:math.mul

参数:

参数名类型描述必填默认值
anumber被乘数-
bnumber乘数-
...number乘数-

返回:

返回类型描述
number

使用:

math.mul(1.1, 1.2, 1.3)

浮点数相加

函数名:math.plus

参数:

参数名类型描述必填默认值
anumber被加数-
bnumber加数-
...number加数-

返回:

返回类型描述
number

使用:

math.plus(1.1, 1.2, 1.3)

浮点数相减

函数名:math.minus

参数:

参数名类型描述必填默认值
anumber被减数-
bnumber减数-
...number减数-

返回:

返回类型描述
number

使用:

math.minus(5, 1.2, 1.3)

浮点数相除

函数名:math.div

参数:

参数名类型描述必填默认值
anumber被除数-
bnumber除数-
...number除数-

返回:

返回类型描述
number

使用:

math.div(3.6, 2, 1.3)

求一堆数值的最大公约数(公因数)

函数名:math.gcd

参数:

参数名类型描述必填默认值
...argsArray<number>参数(不限数量)-

返回:

返回类型描述
number最大公约数(公因数)

使用:

math.gcd(1, 1, 2, 3, 5)

求一堆数值的最小公倍数

函数名:math.lcm

参数:

参数名类型描述必填默认值
...argsArray<number>参数(不限数量)-

返回:

返回类型描述
number最小公倍数

使用:

math.lcm(1, 1, 2, 3, 5)

数值计算相关

命名空间:compute

计算日期天数差

函数名:compute.daysDuration

参数:

参数名类型描述必填默认值
time1Date \| string \| number时间戳 1-
time2Date \| string \| number时间戳 2-

返回:

返回类型描述
number日期天数差

使用:

compute.daysDuration(new Date(), new Date())

计算指定月份前、后 N 个月日期

函数名:compute.monthDelta

使用:

compute.monthDelta(2)
compute.monthDelta(2, '2023/01/01')

计算指定日期前、后 N 天日期

函数名:compute.dateDelta

使用:

compute.dateDelta(2)
compute.dateDelta(2, '2023/01/01')

基于指定日期计算偏移量日期

函数名:compute.calDate

使用:

compute.calDate('2023/01/01', 2, 'YYYY/MM/DD 00:00:00')

计算两点(经纬度)之间的距离

函数名:compute.distance

使用:

compute.distance(longitude1, latitude1, longitude2, latitude2, 'm', 1, 'en-US')

格式化

命名空间:format

姓名脱敏

函数名:format.name

参数:

参数名类型描述必填默认值
valuestring姓名-
separatorstring脱敏符号-

返回:

返回类型描述
string脱敏后姓名字符串

使用:

format.name('MyName', '*')

手机号

函数名:format.mobile

参数:

参数名类型描述必填默认值
valuestring \| number手机号-
separatorstring脱敏符号-

返回:

返回类型描述
string脱敏后手机号字符串

使用:

format.mobile('18888888888', '*')

金额

函数名:format.money

参数:

参数名类型描述必填默认值
valuestring \| number金额-
optionnumber \| string \| OptionObjectoption 配置-

OptionObject 配置:

参数名类型描述必填默认值
precisionnumber精度-
separatorstring千位分隔符-
showZeroboolean强制显示 0-
floorboolean向下取整-

返回:

返回类型描述
string金额字符串

使用:

format.money('35565')

数值

函数名:format.number

参数:

参数名类型描述必填默认值
valuestring \| number数值-
optionnumber \| string \| OptionObjectoption 配置-

OptionObject 配置:

参数名类型描述必填默认值
precisionnumber精度-
separatorstring千位分隔符-
floorboolean向下取整-

返回:

返回类型描述
string数值字符串

使用:

format.number('35565.2', { precision: 2, floor: true })

精确到小数点后 1 位的数值

函数名:format.numberP1

参数:

参数名类型描述必填默认值
valuestring \| number数值-
floorboolean向下取整-

返回:

返回类型描述
string数值字符串

使用:

format.numberP1('35565.2', true)

精确到小数点后 3 位的数值

函数名:format.numberP3

参数:

参数名类型描述必填默认值
valuestring \| number数值-
floorboolean向下取整-

返回:

返回类型描述
string数值字符串

使用:

format.numberP3('35565.2', true)

向下取整的数值

函数名:format.floorNum

参数:

参数名类型描述必填默认值
valuestring \| number数值-
precisionnumber精度-

返回:

返回类型描述
string数值字符串

使用:

format.floorNum('35565.2', { precision: 2, floor: true })

向下取整的,精确到小数点后 1 位的数值

函数名:format.floorNumP1

参数:

参数名类型描述必填默认值
valuestring \| number数值-

返回:

返回类型描述
string数值字符串

使用:

format.floorNumP1('35565.2', true)

向下取整的,精确到小数点后 3 位的数值

函数名:format.floorNumP3

参数:

参数名类型描述必填默认值
valuestring \| number数值-

返回:

返回类型描述
string数值字符串

使用:

format.floorNumP3('35565.2', true)

时间戳转换

函数名:format.timestampformat.moment

使用:

format.timestamp(new Date(), 'YYYY-MM')
format.moment(new Date(), 'YYYY-MM')

超出部分省略号

函数名:format.ellipsis

使用:

format.ellipsis('18888888888', 10)

节流防抖

节流

函数名:throttle

使用:

throttle(() => {
  // do something
}, 1000)

防抖

函数名:debounce

使用:

debounce(() => {
  // do something
}, 1000)

uuid

函数名:uuid

使用:

uuid()

随机生成数值

命名空间:rand

整数

函数名:rand.int

使用:

rand.int(5, 10)

浮点数

函数名:rand.dec

使用:

rand.dec(5, 10, 2)

转换

命名空间:trans

HEX -> RGBA

函数名:trans.hex2rgba

使用:

trans.hex2rgba('#000000')

驼峰 -> 短横线

函数名:trans.hump2dash

使用:

trans.hump2dash('HasProp')

短横线 -> 驼峰

函数名:trans.dash2hump

使用:

trans.dash2hump('has-prop')

阿拉伯数字 -> 中文数字

函数名:trans.num2chn

参数:

参数名类型描述必填默认值
numstring \| number数字-
optionOptionObjectoption 配置-

OptionObject 配置:

参数名类型描述必填默认值
colloquialboolean口语化-
capitalboolean中文数字大写-

返回:

返回类型描述
string中文数字

使用:

trans.num2chn('365')

压缩图片

函数名:trans.compressImg

使用:

trans.compressImg(File, 0.9)

key-value 键值对为数字-字符串/数字形式的 -> 数组

函数名:trans.object2array

使用:

trans.object2array({ a: 1, b: 2 })

数组 -> key-value 键值对为数字-字符串/数字形式

函数名:trans.array2object

使用:

trans.array2object([
  { name: 'a', value: 1 },
  { name: 'b', value: 2 }
])

blob -> base64

函数名:trans.blob2dataurl

使用:

trans.blob2dataurl(new Blob(...))

blob -> file

函数名:trans.blob2file

使用:

trans.blob2file(new File(...))

file -> base64

函数名:trans.file2dataurl

使用:

trans.file2dataurl(new File(...))

file -> blob

函数名:trans.file2blob

使用:

trans.file2blob(new Blob(...))

base64 -> blob

函数名:trans.dataurl2blob

使用:

trans.dataurl2blob('')

base64 -> file

函数名:trans.dataurl2file

使用:

trans.dataurl2file('')

转为数字(number 类型)

函数名:trans.toNumber

使用:

trans.toNumber('123', { replaceNaN: 0 })

截取 URL 参数

命名空间:url

截取 url 中的键值对

函数名:toParam

使用:

url.toParam('https://www.baidu.com?type=what')

键值对转换为 URL 可用的参数字符串

函数名:paramTo

使用:

url.paramTo({ type: 'what' }, { transUndefined: true, transNull: true })

深拷贝

函数名:clone

使用:

clone({})

深合并

函数名:merge

使用:

merge({}, {}, {})

提取对象键值对

函数名:pick

使用:

pick({ a: 1, b: 2, c: 3 }, ['a', 'b'])

提取对象(除传入的 PropertyKey[]以外的)键值对

函数名:reject

使用:

reject({ a: 1, b: 2, c: 3 }, ['a', 'b'])

判断对象中有 PropertyKey

函数名:hasProp

使用:

hasProp({ a: 1, b: 2, c: 3 }, 'a')
hasProp({ a: 1, b: 2, c: 3 }, ['a'])

判断(可能是嵌套的)A 与 B 完全相等

函数名:equal

使用:

equal({ a: 1, b: 2, c: 3 }, { a: 1, c: 3, b: 2 })

判断差异

命名空间:diff

是否 JS 基本类型

函数名:isPrimitive

参数:

参数名类型描述必填默认值
valueany \| undefined数据-

返回:

返回类型描述
boolean判断结果

使用:

diff.isPrimitive(1)

是否对象

函数名:isObject

参数:

参数名类型描述必填默认值
valueany \| undefined数据-

返回:

返回类型描述
boolean判断结果

使用:

diff.isObject({ a: 1 })

是否数组

函数名:isArray

参数:

参数名类型描述必填默认值
valueany \| undefined数据-

返回:

返回类型描述
boolean判断结果

使用:

diff.isArray([1])

是否日期

函数名:isDate

可判断日期字符串/数字时间戳,也可判断 Date 类型日期

参数:

参数名类型描述必填默认值
valueany \| undefined数据-

返回:

返回类型描述
boolean判断结果

使用:

diff.isDate(new Date())

是否正则

函数名:isRegExp

参数:

参数名类型描述必填默认值
valueany \| undefined数据-

返回:

返回类型描述
boolean判断结果

使用:

diff.isRegExp(new RegExp())

是否数字

函数名:isNumber

参数:

参数名类型描述必填默认值
valueany \| undefined数据-
range[number, number]数值所在范围内-
containBoundboolean是否包含数值上下界-

返回:

返回类型描述
boolean判断结果

使用:

diff.isNumber(123)

是否 Blob

函数名:isBlob

参数:

参数名类型描述必填默认值
valueany \| undefined数据-

返回:

返回类型描述
boolean判断结果

使用:

diff.isBlob(new Blob(..))

是否 File

函数名:isFile

参数:

参数名类型描述必填默认值
valueany \| undefined数据-

返回:

返回类型描述
boolean判断结果

使用:

diff.isFile(new File(..))

判断 RGBA 颜色深浅

函数名:rgbaIsLight

参数:

参数名类型描述必填默认值
rnumber红色数值(0-255)-
gnumber绿色数值(0-255)-
bnumber蓝色数值(0-255)-
anumberalpha 通道值【透明度】(0-1)-
thresholdnumber阈值(r * 0.299 + g * 0.758 + b * 0.114,默认 192)-

返回:

返回类型描述
boolean判断结果

使用:

diff.rgbaIsLight(255, 255, 255, 1)

判断颜色(HEX,RGBA)深浅

函数名:colorIsLight

参数:

参数名类型描述必填默认值
colorstring颜色-
thresholdnumber阈值(r * 0.299 + g * 0.758 + b * 0.114,默认 192)-

返回:

返回类型描述
boolean判断结果

使用:

diff.colorIsLight(255, 255, 255, 1)

正则校验

命名空间:test

基础函数

函数名:regexp

使用:

test.regexp(/^[0-9]/, '123')

基础函数进阶用法

1 个值匹配多个正则公式

部分匹配

函数名:regexpsMatchAny

使用:

test.regexpsMatchAny([/^[0-9]/, /^[4-9]/], '123')
全匹配

函数名:regexpsMatchAll

使用:

test.regexpsMatchAll([/^[0-9]/, /^[4-9]/], '123')

多个个值匹配 1 个正则公式

部分匹配

函数名:valuesMatchAny

使用:

test.valuesMatchAny(/^[0-9]/, ['123', '456'])
全匹配

函数名:valuesMatchAll

使用:

test.valuesMatchAll(/^[0-9]/, ['123', '456'])

中国国内手机号

函数名:mobile

使用:

test.mobile('123')

中国国内座机号

函数名:phone

使用:

test.phone('123')

金额

函数名:money

使用:

test.money('123')

base64

函数名:base64

使用:

test.base64('123')

图片文件名

函数名:imageFile

使用:

test.imageFile('123')

HEX color

函数名:hexColor

使用:

test.hexColor('123')

HEXA color

hexColor 已包含 hexColorAhexColorA 只用于匹配带 Alpha 值的 hex 颜色值

函数名:hexColorA

使用:

test.hexColorA('123')

RGBA

函数名:rgba

使用:

test.rgba('123')

渐变色

函数名:linearGradient

使用:

test.linearGradient('123')

URL

函数名:url

使用:

test.url('123')

电子邮件

函数名:email

使用:

test.email('123')

中国国内邮政编码

函数名:zipcode

使用:

test.zipcode('123')

字母+数字

函数名:letterNumber

使用:

test.letterNumber('123')

数字

函数名:number

使用:

test.number('123')

MAC 地址

函数名:mac

使用:

test.mac('11:11:11:11:11')

身份证

函数名:idcard

使用:

test.idcard('123')

IPv4

函数名:ipv4

使用:

test.ipv4('123')

验证日期

函数名:date

使用:

test.date('123')
0.0.42

2 days ago

0.0.40

21 days ago

0.0.41

21 days ago

0.0.39

2 months ago

0.0.38

3 months ago

0.0.37

3 months ago

0.0.36

3 months ago

0.0.35

4 months ago

0.0.34

4 months ago

0.0.33

5 months ago

0.0.32

5 months ago

0.0.30

6 months ago

0.0.31

5 months ago

0.0.26

7 months ago

0.0.27

6 months ago

0.0.28

6 months ago

0.0.29

6 months ago

0.0.23

8 months ago

0.0.25

7 months ago

0.0.22

8 months ago

0.0.21

8 months ago

0.0.20

8 months ago

0.0.19

8 months ago

0.0.18

8 months ago

0.0.17

8 months ago

0.0.16

8 months ago

0.0.15

8 months ago

0.0.14

9 months ago

0.0.13

9 months ago

0.0.12

9 months ago

0.0.11

9 months ago

0.0.10

9 months ago

0.0.9

9 months ago

0.0.8

9 months ago

0.0.7

9 months ago

0.0.6

10 months ago

0.0.5

10 months ago

0.0.4

10 months ago

0.0.3

10 months ago

0.0.2

10 months ago

0.0.1

11 months ago