成员
sm4
sm4
示例:s
加密
import {sm4} from "jxk"
const msg = '我是原始数据' // 可以为 utf8 串或字节数组
const key = '5e0a3ab263b283e3db6001018776c4f0' // 可以为 16 进制串或字节数组,要求为 128 比特 *
let encryptData = sm4.encrypt(msg, key) // 加密,默认输出 16 进制字符串,默认使用 pkcs#7 填充(传 pkcs#5 也会走 pkcs#7 充)
let encryptData = sm4.encrypt(msg, key, {padding: 'none'}) // 加密,不使用 padding
let encryptData = sm4.encrypt(msg, key, {padding: 'none', output: 'array'}) // 加密,不使用 padding,输出为字节数组
let encryptData = sm4.encrypt(msg, key, {mode: 'cbc', iv: 'fedcba98765432100123456789abcdef'}) // 加密,cbc 模式
解密
import {sm4} from "jxk"
const encryptData = 'aaff18e2a966d10017469a492b800169d68e6f979da91cdeed454bb769665892' // 可以为 16 进制串或字节数组
const key = '0123456789abcdeffedcba9876543210' // 可以为 16 进制串或字节数组,要求为 128 比特
let decryptData = sm4.decrypt(encryptData, key) // 解密,默认输出 utf8 字符串,默认使用 pkcs#7 填充(传 pkcs#5 也会走 pkcs#7 填充)
let decryptData = sm4.decrypt(encryptData, key, {padding: 'none'}) // 解密,不使用 padding
let decryptData = sm4.decrypt(encryptData, key, {padding: 'none', output: 'array'}) // 解密,不使用 padding,输出为字节数组
let decryptData = sm4.decrypt(encryptData, key, {mode: 'cbc', iv: 'fedcba98765432100123456789abcdef'}) // 解密,cbc 模式
time_date
- 描述:
格式化时间
- 源码:
格式化时间
示例:
// 全部函数参考文档 https://date-fns.p6p.net/
import { time_date } from "jxk";
// 示例日期
const date1 = new Date(2024, 0, 1); // 2024年1月1日
const date2 = new Date(2024, 2, 15); // 2024年3月15日
// 检查 date1 是否在 date2 之前
const result = time_date.isBefore(date1, date2);
console.log("date1 是否在 date2 之前:", result); // date1 是否在 date2 之前:true
time_format
- 描述:
格式化时间
- 源码:
格式化时间
示例:
// 示例用法
const now = new Date();
const formattedNow = time_format(now, 'yyyy-MM-dd HH:mm:ss');
console.log(formattedNow); // 输出类似 "2024-08-16 03:10:40"
方法
analysis_address(address) → {Array}
- 描述:
省、市、区分析提取
- 源码:
举例:
const address1 = "北京市朝阳区建国门外大街";
const addressComponents1 = analysis_address(address1);
console.log(addressComponents1); // 输出: { province: '北京', city: '朝阳', region: '建国门外大街' }
const address2 = "广东省深圳市南山区科技园";
const addressComponents2 = analysis_address(address2);
console.log(addressComponents2); // 输出: { province: '广东', city: '深圳', region: '南山区科技园' }
const address3 = "上海市浦东新区张江高科技园区";
const addressComponents3 = analysis_address(address3);
console.log(addressComponents3); // 输出: { province: '上海', city: '浦东新区', region: '张江高科技园区' }
const address4 = "黑龙江省哈尔滨市道里区";
const addressComponents4 = analysis_address(address4);
console.log(addressComponents4); // 输出: { province: '黑龙江', city: '哈尔滨', region: '道里区' }
const address5 = "错误地址";
const addressComponents5 = analysis_address(address5);
console.log(addressComponents5); // 输出: null
参数:
名称 | 类型 | 描述 |
---|---|---|
address
|
string |
地址字符串 |
返回:
省市区
- 类型
- Array
analysis_idcard(idCard) → {object}
- 描述:
对身份证号解析
- 源码:
Properties:
名称 | 类型 | 描述 |
---|---|---|
areaCode
|
string |
地区码 |
birthDate
|
string |
出生日期 |
gender
|
string |
性别 |
valid
|
boolean |
是否有效 |
举例:
analysis_idcard('110101200001011232'); // {areaCode: '110101', birthDate: '2000-01-01', gender: '男', valid: true}
参数:
名称 | 类型 | 描述 |
---|---|---|
idCard
|
string |
身份证号 |
返回:
返回身份证号各信息
- 类型
- object
array_chunk(array, size, origin)
根据size 返回对应size的二维数组
- 描述:
根据size 返回对应size的二维数组, 如果array 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。
- 源码:
举例:
chunk(['a', 'b', 'c', 'd'], 2);
// => [['a', 'b'], ['c', 'd']]
chunk(['a', 'b', 'c', 'd'], 3);
// => [['a', 'b', 'c'], ['d']]
chunk(['a', 'b', 'c', 'd', 'e'], 3, false);
// => [['a', 'b', 'c']]
参数:
名称 | 类型 | 描述 |
---|---|---|
array
|
Array | |
size
|
Number | |
origin
|
Boolean |
剩余元素是否支持组成一个区块,默认支持 |
返回:
返回二维数组
array_concat(…args) → {Array}
- 描述:
合并多个数组或单个元素到一个新的数组中。
- 源码:
举例:
// 合并两个数组
console.log(array_concat([1, 2], [3, 4])); // 输出 [1, 2, 3, 4]
// 合并数组和单个元素
console.log(array_concat([1, 2], 3, [4, 5])); // 输出 [1, 2, 3, 4, 5]
// 合并多个数组和单个元素
console.log(array_concat([1, 2], [3, 4], 5, [6, 7])); // 输出 [1, 2, 3, 4, 5, 6, 7]
// 合并空数组
console.log(array_concat([], [])); // 输出 []
// 合并单个元素
console.log(array_concat(1, 2, 3)); // 输出 [1, 2, 3]
// 合并不同类型的元素
console.log(array_concat([1, 2], 'text', [3, 4])); // 输出 [1, 2, 'text', 3, 4]
参数:
名称 | 类型 | 属性 | 描述 |
---|---|---|---|
args
|
any |
<repeatable> |
一个或多个数组或单个元素。 |
返回:
- 合并后的数组。
- 类型
- Array
array_countOccurrences(array) → {object}
- 描述:
统计数组中各项出现的次数
- 源码:
举例:
console.log(array_countOccurrences([1, 1, 2, 3, 3, 4, 4, 4])); // {1: 2, 2: 1, 3: 2, 4: 3}
console.log(array_countOccurrences(['a', 'a', 'bb', 'abc', 'fff', 'fff', '橙', '橙'])); // {a: 2, bb: 1, abc: 1, fff: 2, 橙: 2}
参数:
名称 | 类型 | 描述 |
---|---|---|
array
|
Array |
任意一维数组 |
返回:
返回以每项为key,次数为value的对象
- 类型
- object
array_diffBoth(arr1, arr2)
- 描述:
数组的差集
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
arr1
|
Array |
数组1 |
arr2
|
Array |
数组2 |
返回:
Array 数组的差集
array_diffFirst(arr1, arr2) → {Array}
- 描述:
取第一个数组的差集
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
arr1
|
Array |
数组1 |
arr2
|
Array |
数组2 |
返回:
返回第一个数组中跟第二个数组不同的值
- 类型
- Array
array_durstenfeldShuffle(array) → {Array}
- 描述:
Durstenfeld shuffle (Durstenfeld 随机洗牌算法)
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
array
|
Array |
数组 |
返回:
Return the array in a randomly shuffled order. 返回随机排序后的数组
- 类型
- Array
array_findIndex(array, field, value) → {number|null}
- 描述:
查找数组中具有指定字段和值的对象的索引。
- 源码:
举例:
// 查找具有 id 为 1 的对象的索引
console.log(array_findIndex([{id: 1}, {id: 2}], 'id', 1)); // 输出 0
// 查找具有 name 为 'Alice' 的对象的索引
console.log(array_findIndex([{name: 'Alice'}, {name: 'Bob'}], 'name', 'Alice')); // 输出 0
// 查找具有 age 为 30 的对象的索引
console.log(array_findIndex([{age: 25}, {age: 30}], 'age', 30)); // 输出 1
// 查找不存在的对象的索引
console.log(array_findIndex([{age: 25}, {age: 30}], 'age', 40)); // 输出 null
// 查找空数组中的对象的索引
console.log(array_findIndex([], 'age', 40)); // 输出 null
参数:
名称 | 类型 | 描述 |
---|---|---|
array
|
Array |
待搜索的数组。 |
field
|
string |
要查找的字段名。 |
value
|
* |
字段对应的值。 |
返回:
- 返回匹配对象的索引,如果没有找到则返回 null。
- 类型
- number | null
array_findParent(arr, sonId, optionsopt) → {Array}
- 描述:
在数组中获取指定子 ID 的祖级数据
- 源码:
举例:
const data = [
{ id: 1, pid: 0 },
{ id: 2, pid: 1 },
{ id: 3, pid: 2 }
];
console.log(array_findParent(data, 3)); // 输出 [{ id: 3, pid: 2 }, { id: 2, pid: 1 }, { id: 1, pid: 0 }]
参数:
名称 | 类型 | 属性 | 默认 | 描述 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
arr
|
Array |
原始数据 - 数组 |
|||||||||||||||||
sonId
|
string | number |
子节点 ID |
|||||||||||||||||
options
|
Object |
<optional> |
{}
|
配置数据 Properties
|
返回:
- 包含指定子节点及其所有祖先节点的数据数组
- 类型
- Array
array_findParent(tree, sonId, optionsopt) → {Array}
- 描述:
在 Tree 中获取指定子 ID 的祖级数据
- 源码:
举例:
const tree = [
{ id: 1, pid: 0, children: [
{ id: 2, pid: 1, children: [
{ id: 3, pid: 2 }
] }
] }
];
console.log(array_findParent(tree, 3)); // 输出 [{ id: 3, pid: 2 }, { id: 2, pid: 1 }, { id: 1, pid: 0 }]
参数:
名称 | 类型 | 属性 | 默认 | 描述 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
tree
|
Array |
原始数据 - Tree |
||||||||||||||||||||||
sonId
|
string | number |
子节点 ID |
||||||||||||||||||||||
options
|
Object |
<optional> |
{}
|
配置数据 Properties
|
返回:
- 包含指定子节点及其所有祖先节点的数据数组
- 类型
- Array
array_flatten(arr) → {Array}
- 描述:
将多维数组拍平为一维数组
- 源码:
举例:
console.log(array_flatten([1, [2, [3, [4]], 5]])); // [1, 2, 3, 4, 5]
参数:
名称 | 类型 | 描述 |
---|---|---|
arr
|
Array |
需要拍平的数组 |
返回:
- 拍平后的数组
- 类型
- Array
array_fromTree(tree, childrenFieldopt) → {Array}
- 描述:
将树形结构转换为扁平化的数组
- 源码:
举例:
array_fromTree([{id: 1, children: [{id: 2}, {id: 3}]}], 'children');
// 返回 [{id: 1}, {id: 2}, {id: 3}]
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
tree
|
Array |
树形结构数组 |
||
childrenField
|
string |
<optional> |
'children'
|
子节点字段名称 |
返回:
- 扁平化后的数组
- 类型
- Array
array_groupBy(array, key) → {object}
- 描述:
数组数据分组
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
array
|
Array |
数组 |
key
|
string | function |
分组的字段或函数 |
返回:
返回按某字段或函数分组后的对象
- 类型
- object
array_intersection(array1, array2) → {Array}
- 描述:
计算两个数组的交集。
- 源码:
举例:
console.log(arrayIntersection([1, 2, 3], [2, 3, 4]))
// 输出: [2, 3]
参数:
名称 | 类型 | 描述 |
---|---|---|
array1
|
Array |
第一个数组。 |
array2
|
Array |
第二个数组。 |
返回:
- 包含两个数组交集的数组。
- 类型
- Array
array_keyBy(array, field) → {object}
- 描述:
数组按key排序
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
array
|
Array |
数组 |
field
|
string |
映射字段 |
返回:
返回根据字段映射的对象
- 类型
- object
array_max(array) → {number}
- 描述:
计算数组中的最大值
- 源码:
举例:
console.log(array_max([1, 2, 3, 4, 5]))
// 输出: 5
参数:
名称 | 类型 | 描述 |
---|---|---|
array
|
Array |
输入的数组。 |
抛出:
-
- 如果输入不是数组。
- 类型
- Error
返回:
- 数组中的最大值。
- 类型
- number
array_merge() → {Array}
- 描述:
合并多个数组并返回它们的并集
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
...arrays
|
Array |
可变数量的数组参数 |
抛出:
-
如果任何一个参数不是数组
- 类型
- Error
返回:
所有数组的并集
- 类型
- Array
array_min(array) → {number}
- 描述:
计算数组中的最小值
- 源码:
举例:
console.log(array_min([1, 2, 3, 4, 5]))
// 输出: 1
参数:
名称 | 类型 | 描述 |
---|---|---|
array
|
Array |
输入的数组。 |
抛出:
-
- 如果输入不是数组或数组为空。
- 类型
- Error
返回:
- 数组中的最小值。
- 类型
- number
array_omitBy(arry, keys) → {Array.<object>}
这个函数根据给定的标签列表,排除数组中所有匹配这些标签的项,并返回剩余的项。
- 描述:
从数组中排除指定标签的项
- 源码:
举例:
array_omitBy(
[{ label: 'a', value: 1 }, { label: 'b', value: 2 }, { label: 'c', value: 3 }],
['a', 'c']
);
结果:
[
{ label: 'b', value: 2 }
]
参数:
名称 | 类型 | 描述 |
---|---|---|
arry
|
Array.<object> |
需要处理的数组,其中每个对象包含 |
keys
|
Array.<string> |
需要排除的标签列表 |
返回:
返回一个新数组,其中不包含具有指定标签的项
- 类型
- Array.<object>
array_paging(array, page_size) → {Array}
- 描述:
对数组进行分页
- 源码:
举例:
array_paging([1, 2, 3, 4, 5, 6], 3); // [[1, 2, 3], [4, 5, 6]]
参数:
名称 | 类型 | 描述 |
---|---|---|
array
|
Array |
需要分页的数组 |
page_size
|
number |
每页数量 |
返回:
返回已分页的数组
- 类型
- Array
array_pick(arrObj, field, values) → {Array.<object>}
这个函数根据给定的标签列表,从数组中选择所有匹配这些标签的项,并返回这些项。
- 描述:
从数组中选择指定标签的项
- 源码:
举例:
array_pick(
[{ label: 'a', value: 1 }, { label: 'b', value: 2 }, { label: 'c', value: 3 }],
'label',
['a', 'c']
);
结果:
[
{ label: 'a', value: 1 },
{ label: 'c', value: 3 }
]
参数:
名称 | 类型 | 描述 |
---|---|---|
arrObj
|
Array |
数组对象 |
field
|
string |
匹配的字段 |
values
|
Array |
匹配的值 |
返回:
返回一个新数组,其中只包含具有指定标签的项
- 类型
- Array.<object>
array_randomItem(array, itemNumberopt, repeatopt) → {Array}
- 描述:
随机取数组中的元素
- 源码:
举例:
array_randomItem([1, 2, 3, 4, 5, 6], 3); //[2, 1, 3]
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
array
|
Array |
将要抽取的数组 |
||
itemNumber
|
number |
<optional> |
1
|
抽取元素数量(默认为1) |
repeat
|
boolean |
<optional> |
false
|
是否允许元素重复(默认为false) |
抛出:
-
所需不重复元素数量超过了数组中不重复元素的数量
- 类型
- Error
返回:
返回抽取的元素的数组
- 类型
- Array
array_remove(array, item, itemNumberopt) → {Array}
- 描述:
根据元素删除
- 源码:
举例:
array_remove(['易', '大', '师'], '易'); //['大', '师']
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
array
|
Array |
将要被删除元素的数组 |
||
item
|
any |
元素 |
||
itemNumber
|
number |
<optional> |
1
|
删除个数(不填代表删除全部) |
抛出:
-
删除个数大于数组中指定元素个数
- 类型
- Error
返回:
返回删除后的数组
- 类型
- Array
array_sattoloShuffle(array) → {Array}
- To generate a random permutation where no element remains in its original position.
- To create a random cyclic permutation (where each element moves to a new position).
- 描述:
Sattolo shuffle (Sattolo 洗牌算法) Sattolo's algorithm is a shuffling algorithm that differs slightly from the standard Fisher-Yates (or Durstenfeld) shuffling algorithm.
- 源码:
举例:
array_sattoloShuffle([1, 2, 3, 4, 5]);
return (result): [5, 1, 4, 2, 3]
参数:
名称 | 类型 | 描述 |
---|---|---|
array
|
Array |
数组 |
返回:
Return the array which is a random permutation.
- 类型
- Array
array_shuffle(array) → {Array}
- 描述:
数组随机排序(俗称洗牌)
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
array
|
Array |
数组 |
返回:
返回随机排序后的数组
- 类型
- Array
array_sort(array, {)
根据传入的参数进行排序,返回排序后的数组
- 描述:
排序
- 源码:
举例:
sort([1, 3, 2], { order: 'asc' })
// => [1, 2, 3]
sort([1, 3, 2])
// => [1, 2, 3]
sort([{a: 1, b: 2}, {a: 2, b: 4}], { order: 'des', by: item => item.b })
// => [{a: 2, b: 4}, {a: 1, b: 2}]
sort([{a: 1, b: 2}, {a: 2, b: 4}], { order: 'des' })
// => [{a: 1, b: 2}, {a: 2, b: 4}]
参数:
名称 | 类型 | 描述 |
---|---|---|
array
|
Array | |
{
|
Object |
order?: "asc" | "des", by?: it => it } |
返回:
返回排序后的数组
array_sumBy(arr, iteratee) → {number}
- 描述:
数组求和
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
arr
|
Array |
数组数据 |
iteratee
|
function |
迭代函数 |
返回:
返回求和值
- 类型
- number
array_toMapByKey(array, keyName) → {Map}
- 描述:
根据某个键的值将数组转换为 Map 对象
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
array
|
Array |
数组 |
keyName
|
any |
键名,确保该键名对应的值是数组项的唯一标识,否则会被覆盖 |
返回:
返回一个 Map 对
- 类型
- Map
array_toTree(items, optionsopt) → {Array}
- 描述:
将数组转换为树形结构
- 源码:
举例:
array_toTree([{id: 1, pid: 0}, {id: 2, pid: 1}, {id: 3, pid: 1}], {});
// 返回 [{id: 1, children: [{id: 2}, {id: 3}]}]
参数:
名称 | 类型 | 属性 | 默认 | 描述 | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
items
|
Array |
数组数据 |
||||||||||||||||||||||
options
|
Object |
<optional> |
{}
|
字段指定与配置 Properties
|
返回:
- 转换后的树形结构数组
- 类型
- Array
array_uniqWith(array, comparator) → {Array}
- 描述:
数组去重
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
array
|
Array |
数组数据 |
comparator
|
function |
比较函数 |
返回:
返回比较函数去重后的数组
- 类型
- Array
array_unique(array) → {Array}
- 描述:
数组去重
- 源码:
举例:
array_unique([1,1,2,2,3,3]) // [1,2,3]
参数:
名称 | 类型 | 描述 |
---|---|---|
array
|
Array |
数组数据 |
返回:
返回去重后的数组
- 类型
- Array
array_uniqueByField(arr) → {string}
根据 field 对数组 arr 进行去重
- 描述:
对象数组根据某个字段去重
- 源码:
举例:
array_uniqueByField([{age:20,name:'Andy'}, {age: 21,name:'Jack'}, {age:20,name:'Jenson'}], 'age');
结果:[{age:20,name:'Andy'}, {age: 21,name:'Jack'}]
参数:
名称 | 类型 | 描述 |
---|---|---|
arr
|
Array |
对象数组 |
返回:
field 要去重的字段
- 类型
- string
browser_copyText(text) → {Promise.<boolean>}
- 描述:
复制文本
- 源码:
举例:
browser_copyText('123456');
参数:
名称 | 类型 | 描述 |
---|---|---|
text
|
string |
要复制的文本 |
返回:
是否复制成功
- 类型
- Promise.<boolean>
browser_decode(text) → {string}
- 描述:
HTML 标签反转义
- 源码:
举例:
browser_decode('<p>Hello</p>'); // 返回 "Hello"
参数:
名称 | 类型 | 描述 |
---|---|---|
text
|
string |
要反转义的 HTML 字符串 |
返回:
- 反转义后的纯文本
- 类型
- string
browser_encode(html) → {string}
- 描述:
HTML 标签转义
- 源码:
举例:
browser_encode('<p>Hello</p>'); // 返回 "<p>Hello</p>"
参数:
名称 | 类型 | 描述 |
---|---|---|
html
|
string |
要转义的 HTML 字符串 |
返回:
- 转义后的 HTML 实体字符串
- 类型
- string
browser_exitFullScreen()
- 描述:
退出网页全屏
- 源码:
举例:
browser_exitFullScreen();
browser_getQueryParams(url) → {object}
这个函数使用了URL和URLSearchParams接口,解析URL并返回一个包含所有查询参数的对象。 你可以将这个函数用于任何需要解析URL参数的场景。
- 描述:
获取url参数
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
url
|
string |
要解析的URL |
返回:
包含所有查询参数的对象
- 类型
- object
browser_htmltToText(htmlString) → {string}
该函数适用于需要从HTML内容中提取纯文本的场景,例如在处理用户输入或从网页抓取数据时。
- 描述:
该函数将HTML字符串转换为纯文本,去除所有HTML标签。
- 源码:
举例:
const htmlString = '<div>Hello <strong>World</strong>!</div>';
const text = browser_htmltToText(htmlString);
console.log(text); // 输出: "Hello World!"
参数:
名称 | 类型 | 描述 |
---|---|---|
htmlString
|
string |
要转换的HTML字符串 |
返回:
转换后的纯文本
- 类型
- string
browser_isElementInViewport(element) → {boolean}
- 描述:
检测元素是否至少有部分在可视区域内
- 源码:
举例:
browser_isElementInViewport(document.getElementById('myElement')); // 返回 true 或 false
参数:
名称 | 类型 | 描述 |
---|---|---|
element
|
HTMLElement |
需要检测的元素 |
返回:
元素是否在可视区域内
- 类型
- boolean
browser_md5(string, keyopt, rawopt) → {string}
- 描述:
计算MD5值
- 源码:
参数:
名称 | 类型 | 属性 | 描述 |
---|---|---|---|
string
|
string |
输入字符串 |
|
key
|
string |
<optional> |
HMAC key |
raw
|
boolean |
<optional> |
Raw output switch |
返回:
返回MD5值
- 类型
- string
browser_openFullscreen(element)
- 描述:
开启网页全屏
- 源码:
举例:
const element = document.getElementById('myElement');
browser_openFullscreen(element);
参数:
名称 | 类型 | 描述 |
---|---|---|
element
|
Element |
要进入全屏模式的 DOM 元素 |
browser_openPrint(id)
- 描述:
在当前页面打开新窗口页,并打印
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
id
|
string |
需要打印的 dom id |
browser_openWindow(url, title, width, height) → {Window|null}
- 描述:
在当前页面打开新窗口页
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
url
|
string |
打开的网页地址 |
title
|
string |
打开的网页标题 |
width
|
number |
打开网页的宽度 |
height
|
number |
打开网页的高度 |
返回:
新打开的窗口对象,或在失败时返回 null
- 类型
- Window | null
browser_urlDecode(input) → {string}
- 描述:
对字符串进行 URL 解码。
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
input
|
string |
要处理的字符串。 |
抛出:
-
如果输入不是字符串则报错。
- 类型
- Error
返回:
处理后的字符串。
- 类型
- string
browser_urlEncode(input) → {string}
- 描述:
对字符串进行 URL 编码。
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
input
|
string |
要处理的字符串。 |
抛出:
-
如果输入不是字符串则报错。
- 类型
- Error
返回:
处理后的字符串。
- 类型
- string
file_dataURLtoFile(dataurl, callback)
- 描述:
Base64 DataURL 转 文件
- 源码:
举例:
file_dataURLtoFile('base64.....') -> File
参数:
名称 | 类型 | 描述 |
---|---|---|
dataurl
|
Object |
Base64 DataURL |
callback
|
function |
回调函数 |
file_fileInfo(path) → {Object}
- 描述:
从路径中截取文件信息
- 源码:
举例:
file_fileInfo('/path/to/file.png') -> {name: 'file', type: 'png', fullName: 'file.png'}
参数:
名称 | 类型 | 描述 |
---|---|---|
path
|
String |
路径参数 |
返回:
文件的信息
- 类型
- Object
file_fileToDataURL(object, callback)
- 描述:
文件转Base64 DataURL
- 源码:
举例:
file_fileToDataURL(file,()=>{})
参数:
名称 | 类型 | 描述 |
---|---|---|
object
|
Object |
文件或者blob对象 |
callback
|
function |
回调函数 |
file_formatFileSize(fileSize) → {string}
- 描述:
格式化文件大小
- 源码:
举例:
file_formatFileSize(500) => "500 Bytes"
file_formatFileSize(2048) => "2 KB"
file_formatFileSize(1048576) => "1 MB"
file_formatFileSize(1073741824) => "1 GB"
参数:
名称 | 类型 | 描述 |
---|---|---|
fileSize
|
number |
文件大小,以字节为单位 |
返回:
格式化后的文件大小,包含单位
- 类型
- string
is_array(value) → {boolean}
- 描述:
是否是数组
- 源码:
举例:
is_array([1,2,3]) // true
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是数组
- 类型
- boolean
is_boolean(value) → {Boolean}
- 描述:
判断是否是布尔值
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是布尔值
- 类型
- Boolean
is_chinese(str, isPure) → {boolean}
判断是否为中文字符串
- 描述:
是否为中文 中文范围:\u4E00-\u9FFF 基本的CJK统一表意文字区块。 中文范围:\u3400-\u4DBF CJK统一表意文字扩展A区块。 中文范围:\u20000-\u2A6DF CJK统一表意文字扩展B区块。 中文范围:\u2A700-\u2B73F CJK统一表意文字扩展C区块。 中文范围:\u2B740-\u2B81F CJK统一表意文字扩展D区块。 中文范围:\u2B820-\u2CEAF CJK统一表意文字扩展E区块。 中文范围:\uF900-\uFAFF CJK兼容表意文字区块。 中文范围:\u2F800-\u2FA1F CJK兼容表意文字补充区块。
- 源码:
举例:
// 默认匹配纯中文
is_chinese('中文'); // true
// 第二个参数设置为 false,则匹配包含中文的字符串
is_chinese('abc中文123', false); // true
参数:
名称 | 类型 | 描述 |
---|---|---|
str
|
string |
字符串 |
isPure
|
boolean |
是否纯中文 |
返回:
返回是否是中文字符串
- 类型
- boolean
is_date(value) → {Boolean}
- 描述:
判断是否是日期
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是日期
- 类型
- Boolean
is_empty(value) → {Boolean}
- 描述:
判断是否是空值
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是空值
- 类型
- Boolean
is_float(value) → {boolean}
- 描述:
判断是否是浮点数
- 源码:
举例:
is_float(5.123) // false
is_float(5.0) // false
is_float(5) // false
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是整数
- 类型
- boolean
is_function(value) → {Boolean}
- 描述:
判断是否是函数
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是函数
- 类型
- Boolean
is_idcard(card)
返回是否是有效身份证
- 描述:
返回是否是有效身份证
- 源码:
举例:
is_card(card)
=> true or false
参数:
名称 | 类型 | 描述 |
---|---|---|
card
|
string |
返回:
返回是否是有效身份证
is_integer(value) → {Boolean}
- 描述:
判断是否是整数
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是整数
- 类型
- Boolean
is_ipv4(ip) → {boolean}
- 描述:
判断一个字符串是否是一个合法的IPV4地址
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
ip
|
string |
需要判断的IP |
返回:
返回是否是一个合法的IPV4地址
- 类型
- boolean
is_ipv6(ip) → {boolean}
- 描述:
判断一个字符串是否是一个合法的IPV6地址
- 源码:
举例:
is_ipv6("2001:0db8:85a3:0000:0000:8a2e:0370:7334") // true
参数:
名称 | 类型 | 描述 |
---|---|---|
ip
|
string |
需要判断的IP |
返回:
返回是否是一个合法的IPV4地址
- 类型
- boolean
is_map(value) → {Boolean}
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是Map值
- 类型
- Boolean
is_null(value) → {Boolean}
- 描述:
判断是否是Null值
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是Null值
- 类型
- Boolean
is_number(num) → {boolean}
- 描述:
判断是否是数字
- 源码:
举例:
improt { is_number } from 'jxk'
is_number(123) // true
参数:
名称 | 类型 | 描述 |
---|---|---|
num
|
string | number |
返回:
- 类型
- boolean
is_object(value) → {boolean}
- 描述:
判断是否是Object值
- 源码:
举例:
is_object({}) // true
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是Object值
- 类型
- boolean
is_phone(value) → {Boolean}
- 描述:
判断是否是手机号
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是手机号
- 类型
- Boolean
is_regexp(value) → {Boolean}
- 描述:
判断是否是正则表达式
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是正则表达式
- 类型
- Boolean
is_set(value) → {Boolean}
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是Set值
- 类型
- Boolean
is_string(value) → {Boolean}
- 描述:
判断是否是字符串
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是字符串
- 类型
- Boolean
is_symbol(value) → {Boolean}
- 描述:
判断是否是Symbol值
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是Symbol值
- 类型
- Boolean
is_undefined(value) → {Boolean}
- 描述:
判断是否是Undefined
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是Undefined值
- 类型
- Boolean
is_weakMap(value) → {Boolean}
- 描述:
判断是否是WeakMap值
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是WeakMap值
- 类型
- Boolean
is_weakSet(value) → {Boolean}
- 描述:
判断是否是WeakSet值
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
任意值 |
返回:
返回是否是WeakSet值
- 类型
- Boolean
mask_address(input) → {String}
- 描述:
脱敏地址或普通字符串
- 源码:
举例:
import { mask_address } from 'jxk'
mask_address('江苏省南京市鼓楼区中山路18号德基广场写字楼16层') // 江苏省南*市鼓*区中******************层
mask_address('北京市海淀区清华园1号') // 北京市海*区清****号
mask_address('上海市浦东新区陆家嘴环路1000号') // 上海市浦*****陆***************号
mask_address('13812345678') // 1********78
mask_address('Hello World') // He*********ld
参数:
名称 | 类型 | 描述 |
---|---|---|
input
|
string |
地址或普通字符串 |
返回:
返回脱敏后的字符串
- 类型
- String
mask_email(email) → {String}
- 描述:
脱敏邮箱
- 源码:
举例:
import { mask_email } from 'jxk'
mask_email('contact@163.com') // con***@163.com
mask_email('tt@163.com') // tt***@163.com
参数:
名称 | 类型 | 描述 |
---|---|---|
email
|
string |
邮箱地址 |
返回:
返回脱敏后的邮箱地址
- 类型
- String
mask_idcard(idcard) → {String}
mask_idcard('420101197208271072')
- 描述:
脱敏身份证号
- 源码:
举例:
improt { mask_idcard } from 'jxk'
mask_idcard('420101197208271072') // 4**********2
参数:
名称 | 类型 | 描述 |
---|---|---|
idcard
|
string |
身份证号 |
返回:
返回脱敏身份证号
- 类型
- String
mask_name(name) → {String}
- 描述:
脱敏姓名
- 源码:
举例:
improt { mask_name } from 'jxk'
mask_name('张三') // *三
mask_name('王小明') // *小明
mask_name('John') // *ohn
参数:
名称 | 类型 | 描述 |
---|---|---|
name
|
string |
脱敏姓名 |
返回:
返回脱敏姓名
- 类型
- String
mask_phone(phone) → {String}
mask_phone('13968341859')
- 描述:
脱敏手机号
- 源码:
举例:
improt { mask_phone } from 'jxk'
mask_phone('13968341859') // 139****1859
参数:
名称 | 类型 | 描述 |
---|---|---|
phone
|
string |
手机号 |
返回:
返回脱敏手机号
- 类型
- String
misc_chain(…funcs) → {function}
该函数接受任意数量的参数,并将这些参数依次传递给函数数组中的每个函数。 第一个函数接收原始参数,后续函数接收前一个函数的返回值,最终返回最后一个函数的结果。
- 描述:
链式调用函数
- 源码:
举例:
const add = (x) => x + 1;
const multiply = (x) => x * 2;
const subtract = (x) => x - 3;
const chainedFunction = misc_chain(add, multiply, subtract);
console.log("调用链式函数并输出结果", chainedFunction(5)); // (5 + 1) * 2 - 3 = 9
const toUpperCase = (str) => str.toUpperCase();
const addExclamation = (str) => str + '!';
const repeat = (str) => str + str;
const shout = misc_chain(toUpperCase, addExclamation, repeat);
console.log("调用链式函数并输出结果",shout('hello')); // "HELLO!HELLO!"
参数:
名称 | 类型 | 属性 | 描述 |
---|---|---|---|
funcs
|
any |
<repeatable> |
函数数组 |
返回:
返回一个函数。
- 类型
- function
misc_debounce(fn, delay, firstExecute) → {function}
- 描述:
函数防抖:事件触发后设定一个等待延迟时间,如果在延迟时间内事件被再次触发,则重新计算延迟时间。在延迟时间内没有触发,则会在延迟时间到达后完成函数调用。
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
fn
|
function |
高频事件 |
delay
|
Number |
防抖延迟时间 默认1000 |
firstExecute
|
Boolean |
首次是否执行函数 |
返回:
执行函数
- 类型
- function
misc_deepClone(obj) → {*}
- 描述:
数组(对象)深度克隆
- 源码:
举例:
misc_deepClone({ a: 1, b: { c: 2 } });
// 返回 { a: 1, b: { c: 2 } }
参数:
名称 | 类型 | 描述 |
---|---|---|
obj
|
* |
待克隆的对象 |
返回:
- 克隆后的对象
- 类型
- *
misc_delay(wait) → {Promise}
- 描述:
延迟函数
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
wait
|
Number |
等待时间 |
返回:
返回延迟后的Promise
- 类型
- Promise
misc_download(content, filenameopt, isURLopt)
- 描述:
将字符串、画布元素、图像元素、
Blob
或File
、ArrayBuffer
或类型化数组、对象(转为 JSON 字符串)等下载为文件。
- 源码:
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
content
|
Element | File | Blob | ArrayBuffer | URL | string |
下载内容/下载链接。 |
||
filename
|
string |
<optional> |
document.title
|
文件名,默认使用页面标题。 |
isURL
|
boolean |
<optional> |
false
|
传入的字符串是否为下载链接。(否则将作为文本内容下载)默认为 |
misc_throttle(fn, interval) → {function}
- 描述:
函数节流
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
fn
|
function |
需要节流的函数 |
interval
|
Number |
时间间隔,单位为毫秒 (默认:500) |
返回:
执行函数
- 类型
- function
number_convertUnits(value, fromUnitName, toUnitName, customUnitsopt) → {number}
- 描述:
转换单位
- 源码:
举例:
const lengthResult = convertUnits(100, 'meter', 'km'); // 0.1
const areaResult = convertUnits(1000, 'squareMeter', 'km²'); // 0.001
// 自定义单位的示例用法
const customUnits = {
another: {
unit1: { factor: 3, symbol: lengthSymbol, aliases: [] }, // symbol这里可以随意定义,或者可以用Symbol()来定义
unit2: { factor: 4, symbol: lengthSymbol, aliases: [] },
}
};
const customResult = convertUnits(100, 'unit1', 'unit2', customUnits); // 75
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
value
|
number |
待转换的值 |
||
fromUnitName
|
string |
需要转换的单位 |
||
toUnitName
|
string |
转换后的单位 |
||
customUnits
|
Object |
<optional> |
{}
|
自定义单位 |
返回:
转换后的值
- 类型
- number
number_parse(传入数字) → {Object}
- 描述:
解析数字
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
传入数字
|
Number |
返回:
返回解析对象
- 类型
- Object
number_random(lower, upperopt, isFloatopt) → {number}
产生一个包括 lower 与 upper 之间的数。 如果只提供一个参数返回一个0到提供数之间的数。 如果 isFloat 设为 true,或者 lower 或 upper 是浮点数,结果返回浮点数。
- 描述:
获取2个数之间的随机数
- 源码:
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
lower
|
number |
最小值 |
||
upper
|
number |
<optional> |
最大值 |
|
isFloat
|
boolean |
<optional> |
false
|
是否浮点数 |
返回:
- 随机数
- 类型
- number
number_thousands(number, optionsopt) → {string}
- 描述:
格式化数字为千分位格式
- 源码:
举例:
number_thousands(1234567); // 返回 "1,234,567"
number_thousands(1234567, { separator: '.' }); // 返回 "1.234.567"
number_thousands(1234567, { formatFourDigits: false }); // 返回 "12,345,67"
number_thousands(1234567, { separator: '.', formatFourDigits: false }); // 返回 "12.345.67"
number_thousands(1234567, '.'); // 返回 "1.234.567"
参数:
名称 | 类型 | 属性 | 默认 | 描述 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
number
|
number | string |
待格式化的数字 |
|||||||||||||||||
options
|
Object | string |
<optional> |
" "
|
选项或分隔符 Properties
|
返回:
- 格式化后的字符串
- 类型
- string
number_toBits(num, lengthopt)
- 描述:
将数字转为32位 bit 数组
- 源码:
举例:
{[0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1, 0|1]}
参数:
名称 | 类型 | 属性 | 描述 |
---|---|---|---|
num
|
Number | ||
length
|
Number |
<optional> |
比特数组长度 默认 |
返回:
返回对应位数的比特
number_valid(number, symbol, decimalPlaces) → {Number}
应用场景:强制输入框必须输入有效值,如果值无效,则显示上一步的值
- 描述:
返回有效数字
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
number
|
Number |
数字传参 |
symbol
|
String |
符号(默认:-0+,表示允许负数,0和正数) |
decimalPlaces
|
Number |
小数位数 |
返回:
如果数字有效,则返回当前值,否则返回上一个有效值
- 类型
- Number
number_zeroFilling(num, len, checkopt) → {string}
- 描述:
数字补0
- 源码:
举例:
number_zeroFilling(123, 6); // 返回 "000123"
number_zeroFilling(123, 6, false); // 返回 "000123"
number_zeroFilling(123, 2); // 返回 "123"
number_zeroFilling(-123, 6); // 抛出错误 "输入参数必须是大于等于0的整数"
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
num
|
string | number |
原始数字 |
||
len
|
number |
总位数(总长度) |
||
check
|
boolean |
<optional> |
true
|
是否检查数字的有效性 |
返回:
- 补0后的字符串
- 类型
- string
reg_businessLicense() → {RegExp}
/(^(?:(?![I0ZSV])[\dA-Z]){2}\d{6}(?:(?![I0ZSV])[\dA-Z]){10}$)|(^\d{15}$)|([0-9A-Z]{18})/
- 描述:
营业执照号码校验
- 源码:
返回:
返回营业执照号码正则
- 类型
- RegExp
reg_idcard() → {RegExp}
/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$)/
- 描述:
国内身份证正则
- 源码:
返回:
返回国内身份证正则
- 类型
- RegExp
reg_licencePlateNumber() → {RegExp}
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/
- 描述:
车牌号校验
- 源码:
返回:
返回车牌号正则
- 类型
- RegExp
reg_phone() → {RegExp}
/^0{0,1}(13[0-9]|15[0-9]|16[0-9]|17[0-9]|18[7-9])[0-9]{8}$/
- 描述:
国内手机号正则
- 源码:
返回:
返回国内手机号正则
- 类型
- RegExp
reg_trainNumber() → {RegExp}
/^[GCDZTSPKXLY1-9]\d{1,4}$/
- 描述:
火车车次正则
- 源码:
返回:
返回火车车次正则
- 类型
- RegExp
sm2()
举例:
import {sm2} from "jxk";
let keypair = sm2.generateKeyPairHex()
publicKey = keypair.publicKey // 公钥
privateKey = keypair.privateKey // 私钥
// 默认生成公钥 130 位太长,可以压缩公钥到 66 位
const compressedPublicKey = sm2.compressPublicKeyHex(publicKey) // compressedPublicKey 和 publicKey 等价
sm2.comparePublicKeyHex(publicKey, compressedPublicKey) // 判断公钥是否等价
// 自定义随机数,参数会直接透传给 BigInt 构造器
// 注意:开发者使用自定义随机数,需要自行确保传入的随机数符合密码学安全
let keypair2 = sm2.generateKeyPairHex('123123123123123')
// 初始化随机数池,在某些场景下可能会用到
await sm2.initRNGPool()
let verifyResult = sm2.verifyPublicKey(publicKey) // 验证公钥
verifyResult = sm2.verifyPublicKey(compressedPublicKey) // 验证公钥
// 加密解密
import { sm2 } from 'jxk'
const cipherMode = 1 // 1 - C1C3C2,0 - C1C2C3,默认为1
// 支持使用 asn1 对加密结果进行编码,在 options 参数中传入 { asn1: true } 即可,默认不开启
let encryptData = sm2.doEncrypt(msgString, publicKey, cipherMode, { asn1: false }) // 加密结果
// 支持使用 asn1 对密文进行解码再解密,在 options 参数中传入 { asn1: true } 即可,默认不开启
let decryptData = sm2.doDecrypt(encryptData, privateKey, cipherMode, { asn1: false }) // 解密结果
encryptData = sm2.doEncrypt(msgArray, publicKey, cipherMode) // 加密结果,输入数组
decryptData = sm2.doDecrypt(encryptData, privateKey, cipherMode, {output: 'array'}) // 解密结果,输出数组
// 签名验签
// 纯签名 + 生成椭圆曲线点
let sigValueHex = sm2.doSignature(msg, privateKey) // 签名
let verifyResult = sm2.doVerifySignature(msg, sigValueHex, publicKey) // 验签结果
// 纯签名
let sigValueHex2 = sm2.doSignature(msg, privateKey, {
pointPool: [sm2.getPoint(), sm2.getPoint(), sm2.getPoint(), sm2.getPoint()], // 传入事先已生成好的椭圆曲线点,可加快签名速度
}) // 签名
let verifyResult2 = sm2.doVerifySignature(msg, sigValueHex2, publicKey) // 验签结果
// 纯签名 + 生成椭圆曲线点 + der编解码
let sigValueHex3 = sm2.doSignature(msg, privateKey, {
der: true,
}) // 签名
let verifyResult3 = sm2.doVerifySignature(msg, sigValueHex3, publicKey, {
der: true,
}) // 验签结果
// 纯签名 + 生成椭圆曲线点 + sm3杂凑
let sigValueHex4 = sm2.doSignature(msg, privateKey, {
hash: true,
}) // 签名
let verifyResult4 = sm2.doVerifySignature(msg, sigValueHex4, publicKey, {
hash: true,
}) // 验签结果
// 纯签名 + 生成椭圆曲线点 + sm3杂凑(不做公钥推导)
let sigValueHex5 = sm2.doSignature(msg, privateKey, {
hash: true,
publicKey, // 传入公钥的话,可以去掉sm3杂凑中推导公钥的过程,速度会比纯签名 + 生成椭圆曲线点 + sm3杂凑快
})
let verifyResult5 = sm2.doVerifySignature(msg, sigValueHex5, publicKey, {
hash: true,
publicKey,
})
// 纯签名 + 生成椭圆曲线点 + sm3杂凑 + 不做公钥推 + 添加 userId(长度小于 8192)
// 默认 userId 值为 1234567812345678
let sigValueHex6 = sm2.doSignature(msgString, privateKey, {
hash: true,
publicKey,
userId: 'testUserId',
})
let verifyResult6 = sm2.doVerifySignature(msgString, sigValueHex6, publicKey, {
hash: true,
userId: 'testUserId',
})
sm3(data, optionsopt) → {string}
举例:
// 示例用法
import {sm3} from "jxk";
const hash = sm3("Hello, World!");
console.log(hash); // 输出 SM3 哈希值
参数:
名称 | 类型 | 属性 | 描述 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
data
|
string | Buffer |
需要计算哈希的数据 |
|||||||||||
options
|
Object |
<optional> |
哈希计算选项 Properties
|
返回:
SM3 哈希值
- 类型
- string
string_between(fullStr, prefix, suffix) → {String}
- 描述:
取出两个字符串之间的文本
- 源码:
举例:
string_between("hello","h","o") -> ell
参数:
名称 | 类型 | 描述 |
---|---|---|
fullStr
|
String |
原始字符串 |
prefix
|
String |
前字符串 |
suffix
|
String |
后字符串 |
返回:
取出的中间字符串
- 类型
- String
string_camelCase(value, delimiter) → {String}
- 描述:
字符串转小驼峰风格
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
String |
字符串数据 |
delimiter
|
String |
分隔符 |
返回:
返回小驼峰风格的字符串
- 类型
- String
string_capitalize(value, delimiter) → {String}
- 描述:
字符串首字母大写
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
String |
字符串数据 |
delimiter
|
String |
分隔符 |
返回:
返回首字母大写的字符串
- 类型
- String
string_countCharacters(str) → {Object}
- 描述:
计算字符串中每个字符的出现次数。
- 源码:
举例:
console.log(countCharacters("hello world"))
// 输出: { h: 1, e: 1, l: 3, o: 2, ' ': 1, w: 1, r: 1, d: 1 }
参数:
名称 | 类型 | 描述 |
---|---|---|
str
|
String |
字符串。 |
返回:
- 包含每个字符的出现次数的对象。
- 类型
- Object
string_displace(strs, start, end, placeholder) → {String}
- 描述:
该函数用于对字符串进行置换操作。
- 源码:
举例:
// 保留前缀 "He" 和后缀 "d",其余部分用 "*" 替换
console.log(string_displace("Hello World", 2, 1)); // 输出 "He*********d"
// 保留前缀 "Hel" 和后缀 "rld",其余部分用 "-" 替换
console.log(string_displace("Hello World", 3, 3, "-")); // 输出 "Hel-----------------rld"
// 保留前缀 "H" 和后缀 "d",其余部分用 "#" 替换
console.log(string_displace("Hello World", 1, 1, "#")); // 输出 "H#################d"
// 仅保留前缀 "He",其余部分用 "*" 替换
console.log(string_displace("Hello World", 2)); // 输出 "He****************"
// 仅保留后缀 "ld",其余部分用 "*" 替换
console.log(string_displace("Hello World", undefined, 2)); // 输出 "***********ld"
// 不保留任何前缀或后缀,全部用 "*" 替换
console.log(string_displace("Hello World")); // 输出 "***********"
参数:
名称 | 类型 | 描述 |
---|---|---|
strs
|
String |
需要处理的原始字符串。 |
start
|
Number |
指定需要保留的字符串前缀长度,默认值为 0。 |
end
|
Number |
指定需要保留的字符串后缀长度,默认值为 0。 |
placeholder
|
String |
用于替换中间部分的占位符,默认值为 '*'。 |
返回:
- 返回经过置换处理后的字符串。
- 类型
- String
string_kebabCase(value, delimiter) → {String}
- 描述:
字符串转中划线风格
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
String |
字符串数据 |
delimiter
|
String |
分隔符 |
返回:
返回中划线风格的字符串
- 类型
- String
string_randomString(length, includeSpecialopt) → {String}
- 描述:
根据指定长度生成随机字符串,可选是否包含特殊字符。
- 源码:
举例:
console.log(generateRandomString(10)) // 输出示例: "LGEc8EptLr"
console.log(generateRandomString(10, true)) // 输出示例: "7ooxUA9'}:CP4)urV##["
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
length
|
Number |
要生成的字符串的长度。 |
||
includeSpecial
|
Boolean |
<optional> |
false
|
是否包含特殊字符。 |
返回:
- 生成的随机字符串。
- 类型
- String
string_reverse(str) → {string}
将提供的字符串按照反转输出
- 描述:
字符串反转
- 源码:
举例:
// 反转空字符串
console.log(string_reverse('')); // 输出 ''
// 反转 "hello"
console.log(string_reverse('hello')); // 输出 'olleh'
// 反转 "world"
console.log(string_reverse('world')); // 输出 'dlrow'
// 反转 "12345"
console.log(string_reverse('12345')); // 输出 '54321'
// 反转 "你好世界"
console.log(string_reverse('你好世界')); // 输出 '界世好你'
参数:
名称 | 类型 | 描述 |
---|---|---|
str
|
string |
要转换的字符串 |
返回:
- 返回结果
- 类型
- string
string_short(str, startNumopt, endNumopt, placeholderopt) → {string}
- 描述:
对字符串进行截断处理,保留前后指定数量的字符,并用占位符替换中间的部分。
- 源码:
举例:
// 截断字符串 "HelloWorld1234567890",保留前4后4个字符
console.log(string_short('HelloWorld1234567890')); // 输出 "Hell***567890"
// 截断字符串 "abcdefg",保留前2后2个字符
console.log(string_short('abcdefg', 2, 2)); // 输出 "ab***fg"
// 截断字符串 "1234567890",保留前3后3个字符,使用 "-" 作为占位符
console.log(string_short('1234567890', 3, 3, '-')); // 输出 "123----------7890"
// 截断字符串 "abc",保留前2后1个字符
console.log(string_short('abc', 2, 1)); // 输出 "ab*c"
// 截断空字符串
console.log(string_short('')); // 输出 ""
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
str
|
string |
需要处理的原始字符串。 |
||
startNum
|
number |
<optional> |
4
|
指定需要保留的字符串前缀长度,默认值为 4。 |
endNum
|
number |
<optional> |
4
|
指定需要保留的字符串后缀长度,默认值为 4。 |
placeholder
|
string |
<optional> |
'***'
|
用于替换中间部分的占位符,默认值为 "***"。 |
返回:
- 返回经过截断处理后的字符串。
- 类型
- string
string_snakeCase(str, splitOnNumberopt) → {string}
- 描述:
将字符串转换为蛇形风格(snake_case)。
- 源码:
举例:
// 转换 "CamelCase" 为 snake_case
console.log(string_snakeCase('CamelCase')); // 输出 "camel_case"
// 转换 "ThisIsATest" 为 snake_case
console.log(string_snakeCase('ThisIsATest')); // 输出 "this_is_a_test"
// 转换 "thisIsATest" 为 snake_case
console.log(string_snakeCase('thisIsATest')); // 输出 "this_is_a_test"
// 转换 "thisIsATest123" 为 snake_case
console.log(string_snakeCase('thisIsATest123')); // 输出 "this_is_a_test_123"
// 转换 "thisIsATest123" 为 snake_case,不在字母和数字之间插入下划线
console.log(string_snakeCase('thisIsATest123', false)); // 输出 "this_is_a_test123"
// 转换 "ThisIsATest123" 为 snake_case
console.log(string_snakeCase('ThisIsATest123')); // 输出 "this_is_a_test_123"
// 转换 "ThisIsATest123" 为 snake_case,不在字母和数字之间插入下划线
console.log(string_snakeCase('ThisIsATest123', false)); // 输出 "this_is_a_test123"
// 转换 "ThisIsATest-123" 为 snake_case
console.log(string_snakeCase('ThisIsATest-123')); // 输出 "this_is_a_test_123"
// 转换 "ThisIsATest-123" 为 snake_case,不在字母和数字之间插入下划线
console.log(string_snakeCase('ThisIsATest-123', false)); // 输出 "this_is_a_test-123"
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
str
|
string |
需要转换的原始字符串。 |
||
splitOnNumber
|
boolean |
<optional> |
true
|
是否在字母和数字之间插入下划线,默认为 true。 |
返回:
- 返回转换后的蛇形风格字符串。
- 类型
- string
string_trim(str, trimAllopt) → {string}
- 描述:
移除字符串中的空白字符(包括空格、制表符、换页符等)。
- 源码:
举例:
// 去除普通空格
console.log(string_trim(' Hello World! ')); // 输出 "HelloWorld!"
// 去除制表符
console.log(string_trim('\tTabbed\tText')); // 输出 "TabbedText"
// 去除混合空白
console.log(string_trim(' New\nLine and spaces ')); // 输出 "NewLineandspaces"
// 空字符串处理
console.log(string_trim('')); // 输出 ""
// 无空白字符的字符串
console.log(string_trim('NoSpacesHere')); // 输出 "NoSpacesHere"
// 只去除开头和结尾的空白字符
console.log(string_trim(' Hello World! ', false)); // 输出 "Hello World!"
// 多个空格
console.log(string_trim(' Multiple Spaces ')); // 输出 "MultipleSpaces"
// 只去除开头和结尾的空白字符,多个空格
console.log(string_trim(' Multiple Spaces ', false)); // 输出 "Multiple Spaces"
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
str
|
string |
待处理的字符串。 |
||
trimAll
|
boolean |
<optional> |
false
|
控制是否去除所有空白字符,默认为 false 只去除开头结尾。 |
返回:
- 返回处理后的字符串。
- 类型
- string
time_customFormat(formatopt) → {string}
- 描述:
获取格式化的当前日期和时间,支持自定义格式。
- 源码:
举例:
console.log(time_customFormat()) // 输出: "2024-07-30 15:45:30"
console.log(time_customFormat("DD/MM/YYYY HH:mm:ss")) // 输出: "30/07/2024 15:45:30"
console.log(time_customFormat("MM-DD-YYYY")) // 输出: "07-30-2024"
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
format
|
string |
<optional> |
"YYYY-MM-DD HH:mm:ss"
|
可选的日期时间格式。 |
返回:
格式化后的日期时间字符串。
- 类型
- string
time_dateRange(year, month, day, hour, minute, second) → {Array}
生成一个时间范围数组,该数组包含当前时间和目标时间 如果目标时间在当前时间之后,则返回 [当前时间, 目标时间] 的数组 如果目标时间在当前时间之前或相同,则返回 [目标时间, 当前时间] 的数组
- 描述:
返回一个时间范围
- 源码:
参数:
名称 | 类型 | 默认 | 描述 |
---|---|---|---|
year
|
number |
0
|
需要增加的年数,默认为0 |
month
|
number |
0
|
需要增加的月数,默认为0 |
day
|
number |
0
|
需要增加的天数,默认为0 |
hour
|
number |
0
|
需要增加的小时数,默认为0 |
minute
|
number |
0
|
需要增加的分钟数,默认为0 |
second
|
number |
0
|
需要增加的秒数,默认为0 |
返回:
返回一个包含两个Date对象的数组,分别代表开始时间和结束时间
- 类型
- Array
time_dateToTimestamp(date, inMilliseconds) → {number|null}
- 描述:
将 Date 对象转换为 Unix 时间戳。 验证 Date 对象是否有效,并允许选择输出时间戳的精度(秒或毫秒)。 该函数将验证输入的 Date 对象是否表示有效的日期。
- 源码:
举例:
// 示例: 有效的 Date 对象,输出秒级时间戳
console.log(time_dateToTimestamp(new Date())) // 输出: Unix 时间戳(10位数字)
// 示例: 有效的 Date 对象,输出毫秒级时间戳
console.log(time_dateToTimestamp(new Date(), true)) // 输出: Unix 时间戳(13位数字)
// 示例: 无效的 Date 对象
console.log(time_dateToTimestamp(new Date("invalid"))) // 输出: null
// 示例: 显然无效的 Date 对象
console.log(time_dateToTimestamp(new Date('1000-00-00 00:00:00Z'))) // 输出: null
参数:
名称 | 类型 | 描述 |
---|---|---|
date
|
Date |
Date 对象。 |
inMilliseconds
|
boolean |
如果为 true,则输出 13 位数字的时间戳(毫秒级),否则输出 10 位数字的时间戳(秒级)。默认为 false。 |
返回:
对应的 Unix 时间戳,如果 Date 对象无效则返回 null。
- 类型
- number | null
time_friendlyDateStr(sTime, type) → {string|null}
- 描述:
友好的时间显示
- 源码:
举例:
// 示例: 刚刚
console.log(time_friendlyDateStr('2024-08-02 10:36:30', 'normal')) // 输出: 刚刚
// 示例: 1分钟前
console.log(time_friendlyDateStr('2024-08-02 10:35:30', 'normal')) // 输出: 1分钟前
// 示例: 3小时前
console.log(time_friendlyDateStr('2024-08-02 07:35:30', 'blur')) // 输出: 3小时前
参数:
名称 | 类型 | 描述 |
---|---|---|
sTime
|
string | Date | number |
待格式化的时间, 可传递时间戳(秒、毫秒)、日期对象、日期字符串(YYYY-MM-DD HH:mm:SS) |
type
|
string |
类型 normal | blur | full | ymd | other |
返回:
格式化后的字符串
- 类型
- string | null
time_getDays(year, month)
返回某年某月天数
- 描述:
返回某年某月天数
- 源码:
举例:
const days_1 = time_getDays()
// => 31
const days_2 = time_getDays(2024,9)
// => 30
参数:
名称 | 类型 | 描述 |
---|---|---|
year
|
number |
年 |
month
|
number |
月 |
返回:
返回某年某月天数
time_leftTime(seconds) → {object}
- 描述:
计算剩余时间
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
seconds
|
number |
剩余时间秒数 |
返回:
返回剩余时间的不同单位值
- 类型
- object
time_relativeTime(data) → {Object}
- 描述:
转换相对时间
- 源码:
参数:
名称 | 类型 | 描述 |
---|---|---|
data
|
Array | Object |
数组或对象 |
返回:
返回转换后的相对时间
- 类型
- Object
time_stringToDate(timeStr, format, timezoneOffsetopt) → {Date|null}
- 描述:
将日期时间字符串根据指定格式转换为 Date 对象,并可选时区。 支持多种字符串格式,并验证输入格式的正确性。
- 源码:
举例:
// 示例: 格式 "YYYY-MM-DD HH:mm:SS",UTC-5
const date1 = time_stringToDate("2021-01-01 00:00:00", "YYYY-MM-DD HH:mm:SS", -5)
console.log(date1) // 输出: Date 对象,调整至时区: UTC-5
// 示例: 格式 "YYYY-MM-DD_HH-mm-SS"
const date2 = time_stringToDate("2021-01-01_00-00-00", "YYYY-MM-DD_HH-mm-SS")
console.log(date2) // 输出: Date 对象
// 示例: 格式 "DD/MM/YYYY HH:mm:SS"
const date3 = time_stringToDate("01/01/2021 00:00:00", "DD/MM/YYYY HH:mm:SS")
console.log(date3) // 输出: Date 对象
// 示例: 格式 "MM-DD-YYYY"
const date4 = time_stringToDate("01-01-2021", "MM-DD-YYYY")
console.log(date4) // 输出: Date 对象
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
timeStr
|
string |
日期时间字符串(例如:"2021-01-01 00:00:00")。 |
||
format
|
string |
日期时间字符串的格式(例如:"YYYY-MM-DD HH:mm:SS")。 |
||
timezoneOffset
|
number |
<optional> |
0
|
可选的时区偏移量,以小时为单位,相对于UTC时间。 |
返回:
转换后对应的 Date 对象,如果格式不匹配则返回 null。
- 类型
- Date | null
time_timestampToDate(ts) → {Date|null}
- 描述:
将 Unix 时间戳转换为 Date 对象。 支持秒级 (10位数字) 和毫秒级 (13位数字) 的 Unix 时间戳。 验证时间戳是否有效,并自动调整精度。
- 源码:
举例:
// 示例: 有效的秒级时间戳
console.log(time_timestampToDate(1704067200)); // 输出: Date 对象,代表 2024-01-01 00:00:00 UTC
// 示例: 有效的毫秒级时间戳
console.log(time_timestampToDate(1704067200000)); // 输出: Date 对象,代表 2024-01-01 00:00:00 UTC
// 示例: 无效的时间戳
console.log(time_timestampToDate("invalid")); // 输出: null
参数:
名称 | 类型 | 描述 |
---|---|---|
ts
|
number | string |
Unix 时间戳。 |
返回:
对应的 Date 对象,如果时间戳无效或格式不正确则返回 null。
- 类型
- Date | null
time_week() → {string}
- 描述:
返回当前日期是星期几
- 源码:
返回:
周几
- 类型
- string