成员
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(arrayopt) → {Array}
- 描述:
使用 Fisher-Yates 洗牌算法的简化版本对数组进行随机排序。 该方法虽然简单,但在某些 JavaScript 引擎中可能不是完全随机的。 对于需要高质量随机性的场景,建议使用 durstenfeldShuffle 或 sattoloShuffle。
- 源码:
- 自从:
- 0.1.0
- 查看:
-
- durstenfeldShuffle - 更高质量的洗牌算法
- sattoloShuffle - Sattolo 洗牌算法
举例:
// 基本用法
const numbers = [1, 2, 3, 4, 5]
const shuffled = shuffle(numbers)
console.log(shuffled) // => [3, 1, 5, 2, 4] (随机结果)
console.log(numbers) // => [1, 2, 3, 4, 5] (原数组未改变)
// 处理字符串数组
const words = ['apple', 'banana', 'cherry', 'date']
const shuffledWords = shuffle(words)
// => ['cherry', 'apple', 'date', 'banana'] (随机结果)
// 处理空数组
shuffle([]) // => []
// 处理单元素数组
shuffle([42]) // => [42]
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
array
|
Array |
<optional> |
[]
|
需要洗牌的数组,默认为空数组 |
返回:
返回随机排序后的新数组(不修改原数组)
- 类型
- 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}
- 描述:
判断是否是中国大陆手机号
支持以下号段:
- 移动:134-139, 147, 150-152, 157-159, 178, 182-184, 187-188, 198
- 联通:130-132, 145, 155-156, 166, 171-172, 175-176, 185-186, 196
- 电信:133, 149, 153, 173-174, 177, 180-181, 189, 191, 193, 199
- 虚拟运营商:170
- 源码:
- 自从:
- 0.1.0
举例:
// 验证有效手机号
is_phone('13812345678'); // true
is_phone('15987654321'); // true
is_phone('18123456789'); // true
// 验证无效输入
is_phone('12345678901'); // false (非手机号段)
is_phone('138123456789'); // false (位数错误)
is_phone('138-1234-5678'); // false (包含分隔符)
is_phone(''); // false (空字符串)
is_phone(null); // false (非字符串)
// 在表单验证中使用
function validatePhoneInput(input) {
const phone = input.value.trim();
if (!is_phone(phone)) {
showError('请输入有效的手机号');
return false;
}
return true;
}
// 过滤数组中的有效手机号
const contacts = ['13812345678', '12345678901', '15987654321', 'invalid'];
const validPhones = contacts.filter(is_phone);
console.log(validPhones); // ['13812345678', '15987654321']
参数:
名称 | 类型 | 描述 |
---|---|---|
value
|
any |
待验证的值 |
返回:
如果是有效的中国大陆手机号返回 true,否则返回 false
- 类型
- 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, delayopt, firstExecuteopt) → {function}
- 描述:
函数防抖 - 在事件被触发后设定一个等待延迟时间,如果在延迟时间内事件被再次触发,则重新计算延迟时间
防抖技术常用于:
- 搜索输入框:防止用户输入过程中频繁触发搜索请求
- 窗口resize事件:防止页面大小调整过程中频繁计算布局
- 按钮点击:防止用户意外的重复提交
- API请求:减少服务器负载
- 源码:
- 自从:
- 0.1.0
举例:
// 基本用法:搜索输入防抖
const searchInput = document.getElementById('search');
const debouncedSearch = misc_debounce((value) => {
console.log('搜索:', value);
// 执行搜索请求
}, 300);
searchInput.addEventListener('input', (e) => {
debouncedSearch(e.target.value);
});
// 窗口大小调整防抖
const debouncedResize = misc_debounce(() => {
console.log('窗口大小已改变:', window.innerWidth, window.innerHeight);
// 重新计算布局
}, 250);
window.addEventListener('resize', debouncedResize);
// 首次立即执行模式:防止重复提交
const submitButton = document.getElementById('submit');
const debouncedSubmit = misc_debounce(() => {
console.log('提交表单');
// 执行提交逻辑
}, 2000, true); // 首次立即执行,然后 2 秒内忽略重复点击
submitButton.addEventListener('click', debouncedSubmit);
// API 请求防抖
const debouncedApiCall = misc_debounce(async (userId) => {
try {
const response = await fetch(`/api/users/${userId}`);
const userData = await response.json();
console.log('用户数据:', userData);
} catch (error) {
console.error('获取用户数据失败:', error);
}
}, 500);
// 用户快速切换时只会请求最后一个用户的数据
userSelector.addEventListener('change', (e) => {
debouncedApiCall(e.target.value);
});
// 在 React/Vue 等框架中使用
import { misc_debounce } from 'jxk';
export default {
data() {
return {
searchQuery: '',
searchResults: []
};
},
created() {
this.debouncedSearch = misc_debounce(this.performSearch, 400);
},
methods: {
performSearch(query) {
if (!query.trim()) {
this.searchResults = [];
return;
}
// 执行搜索逻辑
this.searchAPI(query).then(results => {
this.searchResults = results;
});
},
onSearchInput(value) {
this.searchQuery = value;
this.debouncedSearch(value);
}
}
};
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
fn
|
function |
需要防抖的函数 |
||
delay
|
number |
<optional> |
1000
|
防抖延迟时间(毫秒),默认 1000ms |
firstExecute
|
boolean |
<optional> |
false
|
是否在首次调用时立即执行函数 |
返回:
防抖后的函数
- 类型
- 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, intervalopt) → {function}
- 描述:
函数节流 - 限制函数在指定时间间隔内最多只能执行一次
节流技术常用于:
- 滚动事件:限制滚动监听器的执行频率
- 鼠标移动:减少鼠标移动事件的处理次数
- 窗口resize:控制窗口大小调整的响应频率
- API请求:防止用户频繁点击按钮导致的重复请求
- 游戏帧率控制:控制动画更新频率
- 源码:
- 自从:
- 0.1.0
举例:
// 基本用法:滚动事件节流
const throttledScroll = misc_throttle(() => {
console.log('滚动位置:', window.scrollY);
// 执行滚动相关逻辑,如懒加载、回到顶部按钮显示/隐藏等
}, 100); // 每 100ms 最多执行一次
window.addEventListener('scroll', throttledScroll);
// 鼠标移动事件节流
const throttledMouseMove = misc_throttle((event) => {
console.log('鼠标位置:', event.clientX, event.clientY);
// 更新鼠标跟随效果、拖拽操作等
}, 50); // 每 50ms 最多执行一次,保证流畅性
document.addEventListener('mousemove', throttledMouseMove);
// 窗口大小调整节流
const throttledResize = misc_throttle(() => {
console.log('窗口大小:', window.innerWidth, window.innerHeight);
// 重新计算布局、更新图表尺寸等
}, 250); // 每 250ms 最多执行一次
window.addEventListener('resize', throttledResize);
// 按钮点击节流:防止用户快速重复点击
const saveButton = document.getElementById('save');
const throttledSave = misc_throttle(() => {
console.log('正在保存...');
// 执行保存逻辑
saveData().then(() => {
console.log('保存成功');
});
}, 2000); // 2 秒内最多执行一次
saveButton.addEventListener('click', throttledSave);
// API 请求节流
const throttledSearch = misc_throttle(async (query) => {
if (!query.trim()) return;
console.log('搜索:', query);
try {
const response = await fetch(`/api/search?q=${encodeURIComponent(query)}`);
const results = await response.json();
displaySearchResults(results);
} catch (error) {
console.error('搜索失败:', error);
}
}, 1000); // 每秒最多请求一次
searchInput.addEventListener('input', (e) => {
throttledSearch(e.target.value);
});
// 在游戏或动画中使用
const throttledGameUpdate = misc_throttle(() => {
// 更新游戏状态、渲染画面等
updateGameState();
renderGame();
}, 16); // 约60FPS,每 16.67ms 最多执行一次
function gameLoop() {
throttledGameUpdate();
requestAnimationFrame(gameLoop);
}
gameLoop();
// 在 React/Vue 等框架中使用
import { misc_throttle } from 'jxk';
export default {
data() {
return {
scrollPosition: 0,
isScrolling: false
};
},
mounted() {
this.throttledScrollHandler = misc_throttle(this.handleScroll, 100);
window.addEventListener('scroll', this.throttledScrollHandler);
},
beforeDestroy() {
window.removeEventListener('scroll', this.throttledScrollHandler);
},
methods: {
handleScroll() {
this.scrollPosition = window.scrollY;
this.isScrolling = true;
// 滚动停止检测
clearTimeout(this.scrollTimer);
this.scrollTimer = setTimeout(() => {
this.isScrolling = false;
}, 150);
}
}
};
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
fn
|
function |
需要节流的函数 |
||
interval
|
number |
<optional> |
500
|
时间间隔(毫秒),默认 500ms |
返回:
节流后的函数
- 类型
- function
module:SM3(data, optionsopt) → {string|Buffer}
- 描述:
计算指定数据的 SM3 哈希值。SM3 是一种密码杂凑函数, 具有以下特点: - 输出长度固定为 256 位(32 字节) - 单向性:从哈希值无法推导出原始数据 - 雪崩效应:输入的微小变化会导致输出的巨大变化 - 抗碰撞性:难以找到两个不同的输入产生相同的哈希值
- 源码:
- 查看:
-
- https://www.oscca.gov.cn/sca/xxgk/2010-12/17/content_1002389.shtml SM3 密码杂凑算法标准
- sm2 SM2 椭圆曲线公钥密码算法
- sm4 SM4 分组密码算法
举例:
// 基本用法 - 计算字符串的 SM3 哈希值
import { sm3 } from 'jxk'
const message = 'Hello, World!'
const hash = sm3(message)
console.log(hash)
// => '44f0061e69fa6fdfc290c494654a05dc0c053da7e5c52b84ef93a9d67d3fff88'
// 使用不同的输出格式
const data = '中文测试'
// 十六进制输出(默认)
const hexHash = sm3(data, { encoding: 'hex' })
console.log(hexHash) // => '66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0'
// Base64 输出
const base64Hash = sm3(data, { encoding: 'base64' })
console.log(base64Hash) // => 'Zsfzxj7u7dnR8tRr3BDk4kFnxIdc8veiKX2gK49LqOA='
// 处理 Buffer 数据
const buffer = Buffer.from('Binary data', 'utf8')
const bufferHash = sm3(buffer)
console.log(bufferHash)
// => 'f7c3bc1d808e04732adf679965ccc34ca7ae3441b49bdc6502dd27e4d8c4c43'
// 用于数字签名前的消息摘要
const document = '重要合同内容...'
const digest = sm3(document)
console.log('文档摘要:', digest)
// 用于密码存储(注意:实际应用中应加盐)
const password = 'userPassword123'
const salt = 'randomSalt456'
const hashedPassword = sm3(password + salt)
console.log('密码哈希:', hashedPassword)
// 用于数据完整性校验
const fileData = 'file content...'
const checksum = sm3(fileData)
console.log('文件校验和:', checksum)
参数:
名称 | 类型 | 属性 | 描述 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
data
|
string | Buffer |
需要计算哈希的数据,可以是字符串或 Buffer 对象 |
||||||||||||||||
options
|
Object |
<optional> |
哈希计算选项 Properties
|
抛出:
-
-
当输入参数类型不正确时抛出错误
- 类型
- TypeError
-
-
-
当哈希计算失败时抛出错误
- 类型
- Error
-
返回:
SM3 哈希值,格式由 options.encoding 决定
- 类型
- string | Buffer
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
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, delimiteropt) → {String}
- 描述:
将驼峰命名、下划线命名等风格的字符串转换为短横线命名风格。 支持处理复杂的字符串格式,包括大小写混合、特殊分隔符等。 常用于 CSS 类名、HTML 属性名等场景。
- 源码:
- 自从:
- 0.1.0
举例:
// 基本用法
kebabCase('helloWorld')
// => 'hello-world'
// 处理下划线命名
kebabCase('hello_world_test')
// => 'hello-world-test'
// 处理混合格式
kebabCase('HelloWorldTest')
// => 'hello-world-test'
// 处理带分隔符的路径
kebabCase('user/profileInfo', '/')
// => 'user/profile-info'
// 处理空值和边界情况
kebabCase('') // => ''
kebabCase(null) // => null
kebabCase(undefined) // => undefined
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
value
|
String |
需要转换的字符串 |
||
delimiter
|
String |
<optional> |
'/'
|
用于分割路径的分隔符,默认为 '/' |
抛出:
-
当输入不是字符串类型时抛出错误
- 类型
- TypeError
返回:
转换后的短横线风格字符串
- 类型
- 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(yearopt, monthopt, dayopt, houropt, minuteopt, secondopt) → {Array.<Date>}
- 描述:
根据指定的时间值生成一个时间范围。从当前时间开始, 按照给定的年、月、日、时、分、秒计算目标时间, 然后返回一个包含开始时间和结束时间的数组。 自动处理时间顺序,确保返回的数组中第一个元素总是更早的时间。
- 源码:
- 自从:
- 0.1.0
举例:
// 生成未来 7 天的时间范围
const futureRange = dateRange(0, 0, 7)
// => [new Date(), new Date(七天后)]
// 生成过去 30 天的时间范围
const pastRange = dateRange(0, 0, -30)
// => [new Date(三十天前), new Date()]
// 生成未来 2 小时的时间范围
const hourRange = dateRange(0, 0, 0, 2)
// => [new Date(), new Date(两小时后)]
// 生成复杂时间范围,1年 2个月 15天后
const complexRange = dateRange(1, 2, 15)
// => [new Date(), new Date(1年2个月15天后)]
参数:
名称 | 类型 | 属性 | 默认 | 描述 |
---|---|---|---|---|
year
|
number |
<optional> |
0
|
需要增加的年数,可为负数,默认为 0 |
month
|
number |
<optional> |
0
|
需要增加的月数,可为负数,默认为 0 |
day
|
number |
<optional> |
0
|
需要增加的天数,可为负数,默认为 0 |
hour
|
number |
<optional> |
0
|
需要增加的小时数,可为负数,默认为 0 |
minute
|
number |
<optional> |
0
|
需要增加的分钟数,可为负数,默认为 0 |
second
|
number |
<optional> |
0
|
需要增加的秒数,可为负数,默认为 0 |
返回:
返回一个包含两个 Date 对象的数组,分别代表开始时间和结束时间
- 类型
- Array.<Date>
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