utility tool function(BETA)
v0.0.42 更新日志
- 优化
addUnit
参数 - 优化
math.mul
(math.multiply
)、math.plus
(math.add
)、math.minus
(math.substract
)、math.div
(math.division
)参数,原函数传入两个数值改为传入无限多个数值
npm install scat-util@latest
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
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
number | string |
数值 | 否 | - |
option |
string | OptionObject |
类型为 string 时识别为单位;类型为 JSONObject 时识别为配置 | 否 | - |
defaultValue |
number | string |
默认值(优先级低于 option.defaultValue) | 否 | auto |
OptionObject 配置:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
defaultValue |
number | string |
可指定 value 缺省时的默认值 | 否 | - |
unit |
string |
添加到 value 末尾的单位 | 否 | px |
返回:
返回类型 | 描述 |
---|---|
number | string | undefined |
结果 |
使用:
addUnit(3.1415, 'px')
// return '3.1415px'
命名空间:split
函数名:split.str
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
str |
string |
目标字符串 | 否 | - |
slice |
number |
片长 | 否 | - |
option |
OptionObject |
配置 | 是 | - |
OptionObject 配置:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
fromHead |
boolean |
从 list 第一位开始 | 否 | - |
padStart |
string |
分段头部填充字符 | 否 | - |
padEnd |
string |
分段尾部填充字符 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
Array<any> |
结果 |
使用:
split.str('MyName', 2)
// return ['My', 'Na', 'me']
函数名:split.arr
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
arr |
string |
目标数组 | 否 | - |
slice |
number |
片长 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
Array<any> |
结果 |
使用:
split.arr(['My', 'Na', 'me'], 2)
// return [['my', 'Na'], ['me']]
命名空间:str
函数名:str.padStart
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
target |
string |
目标字符串 | 是 | - |
num |
number | string |
最小返回字符串字符长度 | 是 | - |
fillStr |
string |
占位字符串 | 是 | - |
返回:
返回类型 | 描述 |
---|---|
string |
结果 |
使用:
str.padStart('MyName', 7, '*')
// return '*MyName'
函数名:str.padEnd
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
target |
string |
目标字符串 | 是 | - |
num |
number | string |
最小返回字符串字符长度 | 是 | - |
fillStr |
string |
占位字符串 | 是 | - |
返回:
返回类型 | 描述 |
---|---|
string |
结果 |
使用:
str.padEnd('MyName', 7, '*')
// return 'MyName*'
函数:str.initialToUpperCase
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
str |
string |
目标字符串 | 是 | - |
返回:
返回类型 | 描述 |
---|---|
string |
结果 |
使用:
str.initialToUpperCase('asd')
// return 'Asd'
函数:str.initialToLowerCase
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
str |
string |
目标字符串 | 是 | - |
返回:
返回类型 | 描述 |
---|---|
string |
结果 |
使用:
str.initialToLowerCase('ASD')
// return 'aSD'
命名空间:arr
函数名:arr.dedup
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
source |
Array<T> |
数组 | 是 | - |
返回:
返回类型 | 描述 |
---|---|
Array<T> |
结果数组 |
使用:
arr.dedup([1, 1, 2, 3, 5])
// return [1, 2, 3, 5]
函数名:arr.sortAndReverse
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
source |
Array<T> |
数组 | 是 | - |
sortFn |
(arg1: any, arg2?: any) => any |
自定义排序回调 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
Array<T> |
结果数组 |
使用:
arr.sortAndReverse([1, 4, 3, 5], (a, b) => a - b)
// return [5, 4, 3, 1]
函数名:arr.contain
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
source |
Array<T> |
数组 | 是 | - |
target |
Array<T> |
数组 | 是 | - |
返回:
返回类型 | 描述 |
---|---|
boolean |
target 是否 source 的子集 |
使用:
arr.contain([1, 1, 2, 3, 5], [3, 5])
// return true
函数名:arr.union
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
args |
Array<Array<T>> |
可填多数组 | 是 | - |
返回:
返回类型 | 描述 |
---|---|
Array<T> |
- |
使用:
arr.union([1, 2], [3, 4], [5, 6])
// return [1, 2, 3, 4, 5, 6]
函数名:arr.overlap
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
args |
Array<Array<T>> |
可填多数组 | 是 | - |
返回:
返回类型 | 描述 |
---|---|
Array<T> |
- |
使用:
arr.overlap([1, 2, 3], [3, 4], [3, 5, 6])
// return [3]
函数名:arr.addition
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
source |
Array<T> |
数组 | 是 | - |
target |
Array<T> |
数组 | 是 | - |
返回:
返回类型 | 描述 |
---|---|
boolean |
根据全集 source ,求 target 的补集 |
使用:
arr.addition([1, 1, 2, 3, 5], [1])
// return [2, 3, 5]
函数名:arr.differ
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
source |
Array<T> |
数组 | 是 | - |
target |
Array<T> |
数组 | 是 | - |
返回:
返回类型 | 描述 |
---|---|
boolean |
取 source 中与 target 不重合项组成的新集合 |
使用:
arr.differ([1, 1, 2, 3, 5], [1, 1, 2])
// return [3, 5]
函数名:arr.symdiffer
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
source |
Array<T> |
数组 | 是 | - |
target |
Array<T> |
数组 | 是 | - |
返回:
返回类型 | 描述 |
---|---|
boolean |
取 source 与 target 互为不重合项组成的新集合 |
使用:
arr.symdiffer([1, 1, 2, 3, 5], [1, 2, 4])
// return [3, 4, 5]
命名空间:math
函数名:math.mul
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
a |
number |
被乘数 | 否 | - |
b |
number |
乘数 | 否 | - |
... | number |
乘数 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
number |
积 |
使用:
math.mul(1.1, 1.2, 1.3)
函数名:math.plus
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
a |
number |
被加数 | 否 | - |
b |
number |
加数 | 否 | - |
... | number |
加数 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
number |
和 |
使用:
math.plus(1.1, 1.2, 1.3)
函数名:math.minus
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
a |
number |
被减数 | 否 | - |
b |
number |
减数 | 否 | - |
... | number |
减数 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
number |
差 |
使用:
math.minus(5, 1.2, 1.3)
函数名:math.div
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
a |
number |
被除数 | 否 | - |
b |
number |
除数 | 是 | - |
... | number |
除数 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
number |
商 |
使用:
math.div(3.6, 2, 1.3)
函数名:math.gcd
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
...args | Array<number> |
参数(不限数量) | 是 | - |
返回:
返回类型 | 描述 |
---|---|
number |
最大公约数(公因数) |
使用:
math.gcd(1, 1, 2, 3, 5)
函数名:math.lcm
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
...args | Array<number> |
参数(不限数量) | 是 | - |
返回:
返回类型 | 描述 |
---|---|
number |
最小公倍数 |
使用:
math.lcm(1, 1, 2, 3, 5)
命名空间:compute
函数名:compute.daysDuration
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
time1 |
Date | string | number |
时间戳 1 | 是 | - |
time2 |
Date | string | number |
时间戳 2 | 是 | - |
返回:
返回类型 | 描述 |
---|---|
number |
日期天数差 |
使用:
compute.daysDuration(new Date(), new Date())
函数名:compute.monthDelta
使用:
compute.monthDelta(2)
compute.monthDelta(2, '2023/01/01')
函数名: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
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
string |
姓名 | 否 | - |
separator |
string |
脱敏符号 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
string |
脱敏后姓名字符串 |
使用:
format.name('MyName', '*')
函数名:format.mobile
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
string | number |
手机号 | 否 | - |
separator |
string |
脱敏符号 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
string |
脱敏后手机号字符串 |
使用:
format.mobile('18888888888', '*')
函数名:format.money
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
string | number |
金额 | 否 | - |
option |
number | string | OptionObject |
option 配置 | 否 | - |
OptionObject 配置:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
precision |
number |
精度 | 否 | - |
separator |
string |
千位分隔符 | 否 | - |
showZero |
boolean |
强制显示 0 | 否 | - |
floor |
boolean |
向下取整 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
string |
金额字符串 |
使用:
format.money('35565')
函数名:format.number
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
string | number |
数值 | 否 | - |
option |
number | string | OptionObject |
option 配置 | 否 | - |
OptionObject 配置:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
precision |
number |
精度 | 否 | - |
separator |
string |
千位分隔符 | 否 | - |
floor |
boolean |
向下取整 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
string |
数值字符串 |
使用:
format.number('35565.2', { precision: 2, floor: true })
函数名:format.numberP1
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
string | number |
数值 | 否 | - |
floor |
boolean |
向下取整 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
string |
数值字符串 |
使用:
format.numberP1('35565.2', true)
函数名:format.numberP3
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
string | number |
数值 | 否 | - |
floor |
boolean |
向下取整 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
string |
数值字符串 |
使用:
format.numberP3('35565.2', true)
函数名:format.floorNum
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
string | number |
数值 | 否 | - |
precision |
number |
精度 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
string |
数值字符串 |
使用:
format.floorNum('35565.2', { precision: 2, floor: true })
函数名:format.floorNumP1
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
string | number |
数值 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
string |
数值字符串 |
使用:
format.floorNumP1('35565.2', true)
函数名:format.floorNumP3
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
string | number |
数值 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
string |
数值字符串 |
使用:
format.floorNumP3('35565.2', true)
函数名:format.timestamp
或 format.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()
命名空间:rand
函数名:rand.int
使用:
rand.int(5, 10)
函数名:rand.dec
使用:
rand.dec(5, 10, 2)
命名空间:trans
函数名:trans.hex2rgba
使用:
trans.hex2rgba('#000000')
函数名:trans.hump2dash
使用:
trans.hump2dash('HasProp')
函数名:trans.dash2hump
使用:
trans.dash2hump('has-prop')
函数名:trans.num2chn
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
num |
string | number |
数字 | 否 | - |
option |
OptionObject |
option 配置 | 否 | - |
OptionObject 配置:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
colloquial |
boolean |
口语化 | 否 | - |
capital |
boolean |
中文数字大写 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
string |
中文数字 |
使用:
trans.num2chn('365')
函数名:trans.compressImg
使用:
trans.compressImg(File, 0.9)
函数名:trans.object2array
使用:
trans.object2array({ a: 1, b: 2 })
函数名:trans.array2object
使用:
trans.array2object([
{ name: 'a', value: 1 },
{ name: 'b', value: 2 }
])
函数名:trans.blob2dataurl
使用:
trans.blob2dataurl(new Blob(...))
函数名:trans.blob2file
使用:
trans.blob2file(new File(...))
函数名:trans.file2dataurl
使用:
trans.file2dataurl(new File(...))
函数名:trans.file2blob
使用:
trans.file2blob(new Blob(...))
函数名:trans.dataurl2blob
使用:
trans.dataurl2blob('')
函数名:trans.dataurl2file
使用:
trans.dataurl2file('')
函数名:trans.toNumber
使用:
trans.toNumber('123', { replaceNaN: 0 })
命名空间:url
函数名:toParam
使用:
url.toParam('https://www.baidu.com?type=what')
函数名:paramTo
使用:
url.paramTo({ type: 'what' }, { transUndefined: true, transNull: true })
函数名:clone
使用:
clone({})
函数名:merge
使用:
merge({}, {}, {})
函数名:pick
使用:
pick({ a: 1, b: 2, c: 3 }, ['a', 'b'])
函数名:reject
使用:
reject({ a: 1, b: 2, c: 3 }, ['a', 'b'])
函数名:hasProp
使用:
hasProp({ a: 1, b: 2, c: 3 }, 'a')
hasProp({ a: 1, b: 2, c: 3 }, ['a'])
函数名:equal
使用:
equal({ a: 1, b: 2, c: 3 }, { a: 1, c: 3, b: 2 })
命名空间:diff
函数名:isPrimitive
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
any | undefined |
数据 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
boolean |
判断结果 |
使用:
diff.isPrimitive(1)
函数名:isObject
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
any | undefined |
数据 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
boolean |
判断结果 |
使用:
diff.isObject({ a: 1 })
函数名:isArray
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
any | undefined |
数据 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
boolean |
判断结果 |
使用:
diff.isArray([1])
函数名:isDate
可判断日期字符串/数字时间戳,也可判断 Date 类型日期
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
any | undefined |
数据 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
boolean |
判断结果 |
使用:
diff.isDate(new Date())
函数名:isRegExp
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
any | undefined |
数据 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
boolean |
判断结果 |
使用:
diff.isRegExp(new RegExp())
函数名:isNumber
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
any | undefined |
数据 | 否 | - |
range |
[number, number] |
数值所在范围内 | 否 | - |
containBound |
boolean |
是否包含数值上下界 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
boolean |
判断结果 |
使用:
diff.isNumber(123)
函数名:isBlob
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
any | undefined |
数据 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
boolean |
判断结果 |
使用:
diff.isBlob(new Blob(..))
函数名:isFile
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
value |
any | undefined |
数据 | 否 | - |
返回:
返回类型 | 描述 |
---|---|
boolean |
判断结果 |
使用:
diff.isFile(new File(..))
函数名:rgbaIsLight
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
r |
number |
红色数值(0-255) | 是 | - |
g |
number |
绿色数值(0-255) | 是 | - |
b |
number |
蓝色数值(0-255) | 是 | - |
a |
number |
alpha 通道值【透明度】(0-1) | 否 | - |
threshold |
number |
阈值(r * 0.299 + g * 0.758 + b * 0.114,默认 192) | 否 | - |
返回:
返回类型 | 描述 |
---|---|
boolean |
判断结果 |
使用:
diff.rgbaIsLight(255, 255, 255, 1)
函数名:colorIsLight
参数:
参数名 | 类型 | 描述 | 必填 | 默认值 |
---|---|---|---|---|
color |
string |
颜色 | 是 | - |
threshold |
number |
阈值(r * 0.299 + g * 0.758 + b * 0.114,默认 192) | 否 | - |
返回:
返回类型 | 描述 |
---|---|
boolean |
判断结果 |
使用:
diff.colorIsLight(255, 255, 255, 1)
命名空间:test
函数名:regexp
使用:
test.regexp(/^[0-9]/, '123')
函数名:regexpsMatchAny
使用:
test.regexpsMatchAny([/^[0-9]/, /^[4-9]/], '123')
函数名:regexpsMatchAll
使用:
test.regexpsMatchAll([/^[0-9]/, /^[4-9]/], '123')
函数名: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
使用:
test.base64('123')
函数名:imageFile
使用:
test.imageFile('123')
函数名:hexColor
使用:
test.hexColor('123')
hexColor
已包含 hexColorA
,hexColorA
只用于匹配带 Alpha 值的 hex 颜色值
函数名:hexColorA
使用:
test.hexColorA('123')
函数名:rgba
使用:
test.rgba('123')
函数名:linearGradient
使用:
test.linearGradient('123')
函数名:url
使用:
test.url('123')
函数名:email
使用:
test.email('123')
函数名:zipcode
使用:
test.zipcode('123')
函数名:letterNumber
使用:
test.letterNumber('123')
函数名:number
使用:
test.number('123')
函数名:mac
使用:
test.mac('11:11:11:11:11')
函数名:idcard
使用:
test.idcard('123')
函数名:ipv4
使用:
test.ipv4('123')
函数名:date
使用:
test.date('123')