Global

成员

sm4

描述:
  • 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://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(array) → {Array}

描述:
  • 数组随机排序(俗称洗牌)

源码:
作者:
  • 生命过客 <739694218@qq.com>
参数:
名称 类型 描述
array Array

数组

返回:

返回随机排序后的数组

类型
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}

描述:
  • 判断是否是手机号

源码:
作者:
  • 杜同学 <https://github.com/duweikang>
参数:
名称 类型 描述
value any

任意值

返回:

返回是否是手机号

类型
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, delay, firstExecute) → {function}

描述:
  • 函数防抖:事件触发后设定一个等待延迟时间,如果在延迟时间内事件被再次触发,则重新计算延迟时间。在延迟时间内没有触发,则会在延迟时间到达后完成函数调用。

源码:
作者:
  • tank | dayDreamer-byte
参数:
名称 类型 描述
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)

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

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

下载内容/下载链接。

filename string <optional>
document.title

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

isURL boolean <optional>
false

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

misc_throttle(fn, interval) → {function}

描述:
  • 函数节流

源码:
作者:
  • tank
参数:
名称 类型 描述
fn function

需要节流的函数

interval Number

时间间隔,单位为毫秒 (默认:500)

返回:

执行函数

类型
function

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

sm2()

描述:
  • 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}

描述:
  • SM3 消息摘要算法

源码:
作者:
举例:
// 示例用法
import {sm3} from "jxk";
const hash = sm3("Hello, World!");
console.log(hash); // 输出 SM3 哈希值
参数:
名称 类型 属性 描述
data string | Buffer

需要计算哈希的数据

options Object <optional>

哈希计算选项

Properties
名称 类型 属性 默认 描述
encoding string <optional>
'hex'

输出编码格式

返回:

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}

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

源码:
作者:
  • 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, delimiter) → {String}

描述:
  • 字符串转中划线风格

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

字符串数据

delimiter String

分隔符

返回:

返回中划线风格的字符串

类型
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(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 对象是否表示有效的日期。

源码:
作者:
  • 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