Global

成员

time_date

描述:
  • 格式化时间

源码:
作者:
  • https://github.com/date-fns/date-fns

格式化时间

示例:
// 全部函数参考文档 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

描述:
  • 格式化时间

源码:
作者:
  • https://github.com/date-fns/date-fns

格式化时间

示例:
// 示例用法
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 无法被分割成全部等长的区块,那么最后剩余的元素将组成一个区块。

源码:
作者:
  • grantguo <https://github.com/ForeverGuo>
举例:
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}

描述:
  • 统计数组中各项出现的次数

源码:
作者:
  • 橙某人 <https://github.com/ydydydq>
举例:
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
名称 类型 属性 默认 描述
idField string <optional>
'id'

ID 字段名称

pidField string <optional>
'pid'

父节点 ID 字段名称

返回:
  • 包含指定子节点及其所有祖先节点的数据数组
类型
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
名称 类型 属性 默认 描述
idField string <optional>
'id'

ID 字段名称

pidField string <optional>
'pid'

父节点 ID 字段名称

childrenField string <optional>
'children'

子节点字段名称

返回:
  • 包含指定子节点及其所有祖先节点的数据数组
类型
Array

array_flatten(arr) → {Array}

描述:
  • 将多维数组拍平为一维数组

源码:
作者:
  • WZBBiao <https://github.com/WZBbiao>
举例:
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}

描述:
  • 计算两个数组的交集。

源码:
作者:
  • penn <https://github.com/penn201500>
举例:
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}

描述:
  • 合并多个数组并返回它们的并集

源码:
作者:
  • Amonduul <https://amonduul.vercel.app>
参数:
名称 类型 描述
...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>}

这个函数根据给定的标签列表,排除数组中所有匹配这些标签的项,并返回剩余的项。

描述:
  • 从数组中排除指定标签的项

源码:
作者:
  • 卞雪瑞 <bianxr0803@gmail.com>
举例:
array_omitBy(
  [{ label: 'a', value: 1 }, { label: 'b', value: 2 }, { label: 'c', value: 3 }],
  ['a', 'c']
);
结果:
[
  { label: 'b', value: 2 }
]
参数:
名称 类型 描述
arry Array.<object>

需要处理的数组,其中每个对象包含 labelvalue 属性

keys Array.<string>

需要排除的标签列表

返回:

返回一个新数组,其中不包含具有指定标签的项

类型
Array.<object>

array_paging(array, page_size) → {Array}

描述:
  • 对数组进行分页

源码:
作者:
  • XiaoXinYo
举例:
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>}

这个函数根据给定的标签列表,从数组中选择所有匹配这些标签的项,并返回这些项。

描述:
  • 从数组中选择指定标签的项

源码:
作者:
  • 卞雪瑞 <bianxr0803@gmail.com>
  • xkloveme
举例:
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}

描述:
  • 随机取数组中的元素

源码:
作者:
  • XiaoXinYo
举例:
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}

描述:
  • 根据元素删除

源码:
作者:
  • XiaoXinYo
举例:
array_remove(['易', '大', '师'], '易'); //['大', '师']
参数:
名称 类型 属性 默认 描述
array Array

将要被删除元素的数组

item any

元素

itemNumber number <optional>
1

删除个数(不填代表删除全部)

抛出:

删除个数大于数组中指定元素个数

类型
Error
返回:

返回删除后的数组

类型
Array

array_sattoloShuffle(array) → {Array}

  1. To generate a random permutation where no element remains in its original position.
  2. 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
作者:
  • 生命过客 <739694218@qq.com>
查看:
  • 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, {)

根据传入的参数进行排序,返回排序后的数组

描述:
  • 排序

源码:
作者:
  • grantguo <https://github.com/ForeverGuo>
举例:
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 对象

源码:
作者:
  • Amonduul <https://amonduul.vercel.app>
参数:
名称 类型 描述
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
名称 类型 属性 默认 描述
idField string <optional>
'id'

ID字段名称

pidField string <optional>
'pid'

父ID字段名称

childrenField string <optional>
'children'

子节点字段名称

返回:
  • 转换后的树形结构数组
类型
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 进行去重

描述:
  • 对象数组根据某个字段去重

源码:
作者:
  • 生命过客 <739694218@qq.com>
举例:
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('&lt;p&gt;Hello&lt;/p&gt;'); // 返回 "Hello"
参数:
名称 类型 描述
text string

要反转义的 HTML 字符串

返回:
  • 反转义后的纯文本
类型
string

browser_encode(html) → {string}

描述:
  • HTML 标签转义

源码:
作者:
举例:
browser_encode('<p>Hello</p>'); // 返回 "&lt;p&gt;Hello&lt;/p&gt;"
参数:
名称 类型 描述
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值

源码:
作者:
  • https://github.com/blueimp/JavaScript-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 解码。

源码:
作者:
  • penn <https://github.com/penn201500>
参数:
名称 类型 描述
input string

要处理的字符串。

抛出:

如果输入不是字符串则报错。

类型
Error
返回:

处理后的字符串。

类型
string

browser_urlEncode(input) → {string}

描述:
  • 对字符串进行 URL 编码。

源码:
作者:
  • penn <https://github.com/penn201500>
参数:
名称 类型 描述
input string

要处理的字符串。

抛出:

如果输入不是字符串则报错。

类型
Error
返回:

处理后的字符串。

类型
string

file_dataURLtoFile(dataurl, callback)

描述:
  • Base64 DataURL 转 文件

源码:
作者:
  • wzskyline
举例:
file_dataURLtoFile('base64.....')  -> File
参数:
名称 类型 描述
dataurl Object

Base64 DataURL

callback function

回调函数

file_fileInfo(path) → {Object}

描述:
  • 从路径中截取文件信息

源码:
作者:
  • wzskyline
举例:
file_fileInfo('/path/to/file.png') -> {name: 'file', type: 'png', fullName: 'file.png'}
参数:
名称 类型 描述
path String

路径参数

返回:

文件的信息

类型
Object

file_fileToDataURL(object, callback)

描述:
  • 文件转Base64 DataURL

源码:
作者:
  • wzskyline
举例:
file_fileToDataURL(file,()=>{}) 
参数:
名称 类型 描述
object Object

文件或者blob对象

callback function

回调函数

file_formatFileSize(fileSize) → {string}

描述:
  • 格式化文件大小

源码:
作者:
  • 黄方明 <https://github.com/hank-open>
举例:
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兼容表意文字补充区块。

源码:
作者:
  • go522000 <https://github.com/go522000>
举例:
// 默认匹配纯中文
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)

返回是否是有效身份证

描述:
  • 返回是否是有效身份证

源码:
作者:
  • grantguo <https://github.com/ForeverGuo>
举例:
is_card(card)
=> true or false
参数:
名称 类型 描述
card string
返回:

返回是否是有效身份证

is_integer(value) → {Boolean}

描述:
  • 判断是否是整数

源码:
作者:
参数:
名称 类型 描述
value any

任意值

返回:

返回是否是整数

类型
Boolean

is_ipv4(ip) → {boolean}

描述:
  • 判断一个字符串是否是一个合法的IPV4地址

源码:
作者:
  • mozzie <https://du-mozzie.github.io/>
参数:
名称 类型 描述
ip string

需要判断的IP

返回:

返回是否是一个合法的IPV4地址

类型
boolean

is_ipv6(ip) → {boolean}

描述:
  • 判断一个字符串是否是一个合法的IPV6地址

源码:
作者:
  • lgldlk
举例:
is_ipv6("2001:0db8:85a3:0000:0000:8a2e:0370:7334") // true
参数:
名称 类型 描述
ip string

需要判断的IP

返回:

返回是否是一个合法的IPV4地址

类型
boolean

is_map(value) → {Boolean}

描述:
  • 判断是否是Map值

源码:
作者:
参数:
名称 类型 描述
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
作者:
  • 杜同学 <https://github.com/duweikang>
举例:
// 验证有效手机号
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}

描述:
  • 判断是否是Set值

源码:
作者:
参数:
名称 类型 描述
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}

该函数接受任意数量的参数,并将这些参数依次传递给函数数组中的每个函数。 第一个函数接收原始参数,后续函数接收前一个函数的返回值,最终返回最后一个函数的结果。

描述:
  • 链式调用函数

源码:
作者:
  • jay0815
举例:
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
作者:
  • tank | dayDreamer-byte
举例:
// 基本用法:搜索输入防抖
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)

描述:
  • 将字符串、画布元素、图像元素、BlobFileArrayBuffer 或类型化数组、对象(转为 JSON 字符串)等下载为文件。

源码:
作者:
参数:
名称 类型 属性 默认 描述
content Element | File | Blob | ArrayBuffer | URL | string

下载内容/下载链接。

filename string <optional>
document.title

文件名,默认使用页面标题。

isURL boolean <optional>
false

传入的字符串是否为下载链接。(否则将作为文本内容下载)默认为 false

misc_throttle(fn, intervalopt) → {function}

描述:
  • 函数节流 - 限制函数在指定时间间隔内最多只能执行一次

    节流技术常用于:

    • 滚动事件:限制滚动监听器的执行频率
    • 鼠标移动:减少鼠标移动事件的处理次数
    • 窗口resize:控制窗口大小调整的响应频率
    • API请求:防止用户频繁点击按钮导致的重复请求
    • 游戏帧率控制:控制动画更新频率
源码:
自从:
  • 0.1.0
作者:
  • tank
举例:
// 基本用法:滚动事件节流
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 字节) - 单向性:从哈希值无法推导出原始数据 - 雪崩效应:输入的微小变化会导致输出的巨大变化 - 抗碰撞性:难以找到两个不同的输入产生相同的哈希值

源码:
查看:
举例:
// 基本用法 - 计算字符串的 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
名称 类型 属性 默认 描述
encoding string <optional>
'hex'

输出编码格式,可选值:'hex'、'base64'、'buffer'

inputEncoding string <optional>
'utf8'

输入数据编码格式(当 data 为字符串时)

抛出:
  • 当输入参数类型不正确时抛出错误

    类型
    TypeError
  • 当哈希计算失败时抛出错误

    类型
    Error
返回:

SM3 哈希值,格式由 options.encoding 决定

类型
string | Buffer

number_convertUnits(value, fromUnitName, toUnitName, customUnitsopt) → {number}

描述:
  • 转换单位

源码:
作者:
  • Marshall <https://github.com/Xy2002>
举例:
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
名称 类型 属性 默认 描述
separator string <optional>
","

千分位分隔符

formatFourDigits boolean <optional>
true

是否格式化四位数

返回:
  • 格式化后的字符串
类型
string

number_toBits(num, lengthopt)

描述:
  • 将数字转为32位 bit 数组

源码:
作者:
  • xkloveme xkloveme@gmail.com
举例:
{[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>

比特数组长度 默认32

返回:

返回对应位数的比特

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}

描述:
  • 计算字符串中每个字符的出现次数。

源码:
作者:
  • penn <https://github.com/penn201500>
举例:
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}

描述:
  • 该函数用于对字符串进行置换操作。

源码:
作者:
  • xkloveme <xkloveme@gmail.com> - 作者信息
举例:
// 保留前缀 "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}

描述:
  • 根据指定长度生成随机字符串,可选是否包含特殊字符。

源码:
作者:
  • penn <https://github.com/penn201500>
举例:
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}

描述:
  • 获取格式化的当前日期和时间,支持自定义格式。

源码:
作者:
  • penn <https://github.com/penn201500>
举例:
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 对象是否表示有效的日期。

源码:
作者:
  • penn <https://github.com/penn201500>
举例:
// 示例: 有效的 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}

描述:
  • 友好的时间显示

源码:
作者:
  • lz-freedom <https://github.com/lz-freedom>
举例:
// 示例: 刚刚
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)

返回某年某月天数

描述:
  • 返回某年某月天数

源码:
作者:
  • grantguo <https://github.com/ForeverGuo>
举例:
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 对象,并可选时区。 支持多种字符串格式,并验证输入格式的正确性。

源码:
作者:
  • penn <https://github.com/penn201500>
举例:
// 示例: 格式 "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 时间戳。 验证时间戳是否有效,并自动调整精度。

源码:
作者:
  • penn <https://github.com/penn201500>
举例:
// 示例: 有效的秒级时间戳
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}

描述:
  • 返回当前日期是星期几

源码:
作者:
  • tank
返回:

周几

类型
string