Home Reference Source Test

Function

Static Public Summary
public

aggregation(mixins: ...Class): Class

混合多个类

public

appends(fd: FormData, obj: Object): FormData

FormData 批量添加方法 注:该方法不会覆盖掉原本的属性

public

arrayDiffBy(thanArr: Array, thatArr: Array, kFn: Function): ArrayDiff

比较两个数组的差异

public

将数组映射为 Map

public

asIterator(iterator: Iterator<Object>): Array<Object>

将一个 Iterator 迭代器转换为一个 Array 目前 {@override Array.from} 已取代改函数

public

assign(objects: ...Object): Object

合并多个对象的属性 1.

public

将数组异步压平一层

public

包装一个异步函数为有限制并发功能的函数

public

获取自增长序列的最新值

public

将空白字符串转换为 null

public

置空对象所有空白的属性

public

桥接对象不存在的字段

public

compare(x: any, y: any): Boolean

深度比较两个对象是否相等

public

将多个函数组合起来 前面函数的返回值将变成后面函数的第一个参数,如果到了最后一个函数执行完成,则直接返回 该函数是自动柯里化,将对所有传入的函数进行柯里化处理

public

复制一段文本内容

public

createElByString(str: String): Element

根据 html 字符串创建 Element 元素

public

curry(fn: Function, args: ...any): Function

将函数包装为柯里化函数 注: 该函数模仿了 Lodash 的 curry 函数

public

dateBetween(start: Date, end: Date): DateBetween

获取两个时间的差值

public

获取一个增强的日期

public

dateFormat(date: Date, fmt: String): String

为 js 中的 Date 对象原型添加 format 格式化方法

public

dateParse(str: *, fmt: *): *

public

debounce(delay: Number, action: Function, init: Object): Function

函数去抖 去抖 (debounce) 去抖就是对于一定时间段的连续的函数调用,只让其执行一次 注: 包装后的函数如果两次操作间隔小于 delay 则不会被执行, 如果一直在操作就会一直不执行, 直到操作停止的时间大于 delay 最小间隔时间才会执行一次, 不管任何时间调用都需要停止操作等待最小延迟时间 应用场景主要在那些连续的操作, 例如页面滚动监听, 包装后的函数只会执行最后一次 注: 该函数第一次调用一定不会执行,第一次一定拿不到缓存值,后面的连续调用都会拿到上一次的缓存值。如果需要在第一次调用获取到的缓存值,则需要传入第三个参数 init,默认为 undefined 的可选参数 注: 返回函数结果的高阶函数需要使用 Proxy 实现,以避免原函数原型链上的信息丢失

public

递归使对象不可变

public

deepProxy(object: Object): Object

包装对象,使其成为可以任意深度调用而不会出现 undefined 调用的问题 注意: 该函数不能进行递归调用(JSON.stringfy),一定会造成堆栈溢出的问题(RangeError: Maximum call stack size exceeded)

public

deletes(fd: FormData, keys: Array): FormData

FormData 批量删除方法

public

将一个谓词函数取反

public

download(blob: Blob, filename: String)

在浏览器上下载二进制资源

public

async downloadString(str: String, filename: String)

在浏览器上下载文本内容

public

async downloadUrl(url: String, filename: String): *

根据 url 下载二进制资源

public

将对象的所有属性置空

public

空的函数

public

excludeFields(object: Object, fields: ...String | Symbol | Number): Object

排除对象中的指定字段 注: 此处将获得一个浅拷贝对象

public

excludeFieldsDeep(object: Object, fields: ...Object): *

递归排除对象中的指定字段

public

fetchTimeout(fetchPromise: Promise, timeout: Number): Promise

为 fetch 请求添加超时选项 注:超时选项并非真正意义上的超时即取消请求,请求依旧正常执行完成,但会提前返回 reject 结果

public

fill(item: String, len: Number): String

this function was deprecated. 已废弃,请使用 ES6 {@link String.prototype.repeat} 函数,具体请参考 MDN {@url(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/repeat)}

填充字符串到指定长度

public

filterItems(arr: Array, deleteItems: Array, kFn: Function): *

从数组中移除指定的元素 注: 时间复杂度为 1~3On

public

自行实现 flatMap,将数组压平一层

public

floatEquals(num1: Number, num2: Number): Boolean

比较两个浮点数是否相等 具体实现采用差值取绝对值并与 Number.EPSILON 比较的方式,如果小于浮点数最小差值,则认为它们是 [相等] 的

public

formDataToArray(fd: FormData): Array

this function was deprecated. 已被原生函数 Array.from 取代

FormData 转换为包含所有键值数组的二维数组函数

public

format(str: String, args: Object): String

this function was deprecated. 已废弃,请使用 ES6 模板字符串 {@url(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/template_strings)}

字符串格式化

public

获取 cookie 键值映射 Map

public

getCusorPostion(el: HTMLFormElement): Number

获取输入框中光标所在位置

public

获取对象中所有的属性及对应的值,包括 ES6 新增的 Symbol 类型的属性

public

getObjectKeys(object: Object): Array<PropertyKey>

this function was deprecated. 已废弃,请使用 ES6 {@see Reflect.ownKeys} 代替,具体参考 {@link https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys}

获取对象中所有的属性,包括 ES6 新增的 Symbol 类型的属性

public

获取对象中所有的属性值,包括 ES6 新增的 Symbol 类型的属性

public

获取当前选中的文本

public

getYearWeek(date: *): Number

this function was deprecated. 不推荐使用,请使用 {@link dateEnhance} 代替

获取一年内的第多少星期

public

groupBy(arr: Array<Object>, kFn: Function, vFn: Function, init: Function): Map<Object, Object>

js 数组按照某个条件进行分组

public

insertText(el: HTMLFormElement, text: String, start: Number)

在指定位置后插入文本

public
this function was deprecated. 已废弃,请使用 {@link stringValidator#isBlank}

判断一个字符串是否为空白的字符串

public

isEditable(el: Element): Boolean

判断指定元素是否是可编辑元素 注:可编辑元素并不一定能够进行编辑,例如只读的 input 元素

public
this function was deprecated. 已废弃,请使用 {@link stringValidator#isEmpty}

判断一个字符串是否为空字符串

public
this function was deprecated. 已废弃,请使用 {@link stringValidator#isFloat}

判断字符串是否位小数

public

判断一个对象是否是无效的 无效的值包含 null/undefined

public
this function was deprecated. 已废弃,请使用 {@link stringValidator#isInteger}

判断字符串是否位整数

public

isRange(num: Number, min: Number, max: Number): *

判断数字是否在指定区间之中

public

lastFocus(): Element

获取到最后一个获得焦点的元素

public

listToTree(list: Array<Object>, options: Object): Object | Array<String>

将列表转换为树节点 注: 该函数默认树的根节点只有一个,如果有多个,则返回一个数组

public

async loadResource(url: RequestInfo, dom: HTMLImageElement | HTMLAudioElement | HTMLVideoElement | HTMLTrackElement | HTMLScriptElement, init: RequestInit)

将 url 中的内容加载到元素上 注:domSelector 必须有 src 属性用以将加载完成的资源赋值给其,加载默认是异步的

public

加载一个远程脚本文件

public

将 Map 转换为 Object 对象

public

objToFormData(data: *): FormData

将参数对象转换为 FormData,只转换一层

public

将 Object 对象 转换为 Map

public

将指定函数包装为只调用一次

public

onceOfSameParam(fn: Function, paramConverter: Function): Function

包装一个函数为指定参数只执行一次的函数

public

parseUrl(url: *): *

public

生成一个随机的数字 如果没有参数,则会抛出异常

public

range(start: Number, end: Number, sep: Number): Array<Number>

创建一个等差数列数组

public

readLocal(file: File, option: Object): Promise

读取本地浏览器选择的文件

public

removeEl(el: Element): Element

直接删除指定元素

public

removeText(el: HTMLFormElement, start: Number, end: Number)

在指定范围内删除文本

public

repeatedCall(num: Number, fn: Function, args: ...Object): Array

重复执行指定的函数

public

返回第一个参数的函数 注: 一般可以当作返回参数自身的函数,如果你只关注第一个参数的话

public

返回合理参数本身的函数 1.

public

safeExec(fn: Function, defaultVal: Object, args: ...Object): Object | undefined

安全执行某个函数

public

setCusorPostion(el: HTMLFormElement, start: Number, end: Number)

设置输入框中选中的文本/光标所在位置

public

sets(fd: FormData, obj: Object): FormData

FormData 批量设置方法 注:该方法会覆盖掉原本的属性

public

使用 Proxy 实现通用的单例模式

public

sleep(time: Number)

阻塞主线程指定时间 注: 和 wait 不同,该函数会真的阻塞住主线程,即这段时间内其他的代码都无法执行,例如用户的点击事件!

public

sortBy(arr: Array, kFn: Function): Array

快速根据指定函数对数组进行排序 注: 使用递归实现,对于超大数组(其实前端的数组不可能特别大吧?#笑)可能造成堆栈溢出

public

拼接参数字符串

public

将字符串转为字符流

public

strToDate(dateStr: String, fmt: String): Date

this function was deprecated. 已弃用,请使用可读性更好的 {@link dateParse} 代替

解析字符串为 Date 对象

public

throttle(delay: Number, action: Function): Function

函数节流 节流 (throttle) 让一个函数不要执行的太频繁,减少执行过快的调用,叫节流 类似于上面而又不同于上面的函数去抖, 包装后函数在上一次操作执行过去了最小间隔时间后会直接执行, 否则会忽略该次操作 与上面函数去抖的明显区别在连续操作时会按照最小间隔时间循环执行操作, 而非仅执行最后一次操作 注: 该函数第一次调用一定会执行,不需要担心第一次拿不到缓存值,后面的连续调用都会拿到上一次的缓存值 注: 返回函数结果的高阶函数需要使用 Proxy 实现,以避免原函数原型链上的信息丢失

public

测试函数的执行时间 注:如果函数返回 Promise,则该函数也会返回 Promise,否则直接返回执行时间

public

字符串安全的转换为小写

public
this function was deprecated. 已废弃,请使用更好的 {@link arrayToMap} 替代

将数组转化为一个 Object 对象

public

toString(object: Object): String

将任意对象转换为 String 主要避免原生 Object toString 遇到某些空值的时候抛异常的问题

public

默认实现的 toString 函数

public

字符串安全的转换为大写

public

treeMapping(root: Object, options: Object): INode

遍历并映射一棵树的每个节点

public

treeToList(root: Object, options: Object): Array<Object>

将树节点转为树节点列表

public

trySometime(fn: Function, num: Number, errorCheck: Function): Function

包装一个函数为有错误重试功能的函数 注: 如果发生错误,最终将抛出最后一次调用的异常

public

包装一个函数为有错误重试功能的函数 注意: 该函数是并行运行,所以一旦调用,就会同时调用 n 次,不管之前有没有失败。。。此函数不适合包装有副作用的操作,例如修改用户信息,请使用 trySometime 替代

public

js 的数组去重方法

public

等待指定的时间/等待指定表达式成立 如果未指定等待条件则立刻执行 注: 此实现会存在宏任务与微任务的问题,切记 async-await 本质上还是 Promise 的语法糖,实际上并非真正的同步函数!!!

public

waitResource(fn: Function, option: Object): *

轮询等待指定资源加载完毕再执行操作 使用 Promises 实现,可以使用 ES7 的 {@async}/{@await} 调用

public

watch(fn: Function, callback: Function, interval: Number): Function

监视指定函数返回值的变化

public

监听 event 的添加 注:必须及早添加

public

watchObject(object: Object, callback: WatchObjectCallback): Object

深度监听指定对象属性的变化 注:指定对象不能是原始类型,即不可变类型,而且对象本身的引用不能改变,最好使用 const 进行声明

Static Public

public aggregation(mixins: ...Class): Class source

import {aggregation} from 'rx-util/src/module/obj/aggregation.js'

混合多个类

Params:

NameTypeAttributeDescription
mixins ...Class

需要混合的多个类及其构造函数参数映射函数的 Map 集合

Return:

Class

返回一个混合后的类,构造函数将的参数

public appends(fd: FormData, obj: Object): FormData source

FormData 批量添加方法 注:该方法不会覆盖掉原本的属性

Params:

NameTypeAttributeDescription
fd FormData

FormData 对象

obj Object

键值对对象

Return:

FormData

添加完成后的 FormData 对象

Test:

public arrayDiffBy(thanArr: Array, thatArr: Array, kFn: Function): ArrayDiff source

import {arrayDiffBy} from 'rx-util/src/module/array/arrayDiffBy.js'

比较两个数组的差异

Params:

NameTypeAttributeDescription
thanArr Array

第一个数组

thatArr Array

第二个数组

kFn Function
  • optional
  • default: returnItself

每个元素的唯一标识产生函数

Return:

ArrayDiff

比较的差异结果

Test:

public arrayToMap(array: Array<Object>, kFn: function, vFn: Function): Map<Object, Object> source

import {arrayToMap} from 'rx-util/src/module/array/arrayToMap.js'

将数组映射为 Map

Params:

NameTypeAttributeDescription
array Array<Object>

数组

kFn function

产生 Map 元素唯一标识的函数

vFn Function
  • optional

产生 Map 值的函数,默认为返回数组的元素

Return:

Map<Object, Object>

映射产生的 map 集合

Test:

public asIterator(iterator: Iterator<Object>): Array<Object> source

import {asIterator} from 'rx-util/src/module/array/asIterator.js'

将一个 Iterator 迭代器转换为一个 Array 目前 {@override Array.from} 已取代改函数

Params:

NameTypeAttributeDescription
iterator Iterator<Object>

Iterator 迭代器

Return:

Array<Object>

Iterator 中每一项元素转换而得到的 Array

public assign(objects: ...Object): Object source

import {assign} from 'rx-util/src/module/obj/assign.js'

合并多个对象的属性

  1. 该合并的方式为浅层合并,只会合并一层的对象
  2. 默认忽略值为 undefined/null 的属性

Params:

NameTypeAttributeDescription
objects ...Object

任意数量的对象

Return:

Object

合并后的对象

Test:

public async asyncFlatMap(arr: Array<Object>, fn: Function): Promise<Array<Object>> source

import {asyncFlatMap} from 'rx-util/src/module/array/asyncFlatMap.js'

将数组异步压平一层

Params:

NameTypeAttributeDescription
arr Array<Object>

数组

fn Function

映射函数,将一个元素映射为一个数组

Return:

Promise<Array<Object>>

压平一层的数组

Test:

public asyncLimiting(fn: Function, options: Object): Function source

import {asyncLimiting} from 'rx-util/src/module/function/asyncLimiting.js'

包装一个异步函数为有限制并发功能的函数

Params:

NameTypeAttributeDescription
fn Function

异步函数

options Object
  • optional
  • default: {}

可选参数

options.limit Number
  • optional
  • default: 1

并发限制数量,默认为 1

Return:

Function

返回被包装后的限制并发功能的函数

public autoIncrement(): Number source

import {autoIncrement} from 'rx-util/src/module/number/autoIncrement.js'

获取自增长序列的最新值

Return:

Number

最新值

Test:

public blankToNull(str: String): String source

import {blankToNull} from 'rx-util/src/module/string/blankToNull.js'

将空白字符串转换为 null

Params:

NameTypeAttributeDescription
str String

将空字符串转换为 {@code null}

Return:

String

可能为 {@code null}

Test:

public blankToNullField(obj: Object): Object source

import {blankToNullField} from 'rx-util/src/module/obj/blankToNullField.js'

置空对象所有空白的属性

Params:

NameTypeAttributeDescription
obj Object

对象

Return:

Object

将所有的空白属性全部转换为 null 的新对象

Test:

public bridge(map: Number): Function source

桥接对象不存在的字段

Params:

NameTypeAttributeDescription
map Number

代理的字段映射 Map

Return:

Function

转换一个对象为代理对象

Test:

public compare(x: any, y: any): Boolean source

import {compare} from 'rx-util/src/module/obj/compare.js'

深度比较两个对象是否相等

Params:

NameTypeAttributeDescription
x any

任何对象

y any

任何对象

Return:

Boolean

是否相等

public compose(fns: ...Function): Function source

将多个函数组合起来 前面函数的返回值将变成后面函数的第一个参数,如果到了最后一个函数执行完成,则直接返回 该函数是自动柯里化,将对所有传入的函数进行柯里化处理

Params:

NameTypeAttributeDescription
fns ...Function

多个需要连接函数

Return:

Function

连接后的柯里化函数

Test:

public copyText(text: String): Boolean source

import {copyText} from 'rx-util/src/module/dom/copyText.js'

复制一段文本内容

Params:

NameTypeAttributeDescription
text String

要进行复制的文本

Return:

Boolean

是否复制成功

public createElByString(str: String): Element source

import {createElByString} from 'rx-util/src/module/dom/createElByString.js'

根据 html 字符串创建 Element 元素

Params:

NameTypeAttributeDescription
str String

html 字符串

Return:

Element

创建的 Element 元素

Test:

public curry(fn: Function, args: ...any): Function source

将函数包装为柯里化函数 注: 该函数模仿了 Lodash 的 curry 函数

Params:

NameTypeAttributeDescription
fn Function

需要包装的函数

args ...any

应用的部分参数

Return:

Function

包装后的函数

Test:

public dateBetween(start: Date, end: Date): DateBetween source

import {dateBetween} from 'rx-util/src/module/date/dateBetween.js'

获取两个时间的差值

Params:

NameTypeAttributeDescription
start Date

开始时间

end Date

结束时间

Return:

DateBetween

差值对象

Test:

public dateEnhance(date: Date): DateEnhance source

import {dateEnhance} from 'rx-util/src/module/date/dateEnhance.js'

获取一个增强的日期

Params:

NameTypeAttributeDescription
date Date

要增强的日期

Return:

DateEnhance

增强日期

Test:

public dateFormat(date: Date, fmt: String): String source

import {dateFormat} from 'rx-util/src/module/date/dateFormat.js'

为 js 中的 Date 对象原型添加 format 格式化方法

Params:

NameTypeAttributeDescription
date Date

要进行格式化的日期

fmt String

日期的格式

Return:

String

格式化得到的结果

Test:

public dateParse(str: *, fmt: *): * source

import {dateParse} from 'rx-util/src/module/date/dateParse.js'

Params:

NameTypeAttributeDescription
str *
fmt *

Return:

*

Test:

public debounce(delay: Number, action: Function, init: Object): Function source

函数去抖 去抖 (debounce) 去抖就是对于一定时间段的连续的函数调用,只让其执行一次 注: 包装后的函数如果两次操作间隔小于 delay 则不会被执行, 如果一直在操作就会一直不执行, 直到操作停止的时间大于 delay 最小间隔时间才会执行一次, 不管任何时间调用都需要停止操作等待最小延迟时间 应用场景主要在那些连续的操作, 例如页面滚动监听, 包装后的函数只会执行最后一次 注: 该函数第一次调用一定不会执行,第一次一定拿不到缓存值,后面的连续调用都会拿到上一次的缓存值。如果需要在第一次调用获取到的缓存值,则需要传入第三个参数 init,默认为 undefined 的可选参数 注: 返回函数结果的高阶函数需要使用 Proxy 实现,以避免原函数原型链上的信息丢失

Params:

NameTypeAttributeDescription
delay Number

最小延迟时间,单位为 ms

action Function

真正需要执行的操作

init Object
  • optional
  • default: undefined

初始的缓存值,不填默认为 undefined

Return:

Function

包装后有去抖功能的函数。该函数是异步的,与需要包装的函数 action 是否异步没有太大关联

Test:

public deepFreeze(obj: Object): Object source

import {deepFreeze} from 'rx-util/src/module/obj/deepFreeze.js'

递归使对象不可变

Params:

NameTypeAttributeDescription
obj Object

任何非空对象

Return:

Object

新的不可变对象

Test:

public deepProxy(object: Object): Object source

import {deepProxy} from 'rx-util/src/module/obj/deepProxy.js'

包装对象,使其成为可以任意深度调用而不会出现 undefined 调用的问题 注意: 该函数不能进行递归调用(JSON.stringfy),一定会造成堆栈溢出的问题(RangeError: Maximum call stack size exceeded)

Params:

NameTypeAttributeDescription
object Object

任意一个 Object 对象

Return:

Object

包装后的对象

Test:

public deletes(fd: FormData, keys: Array): FormData source

FormData 批量删除方法

Params:

NameTypeAttributeDescription
fd FormData

FormData 对象

keys Array

删除的 key 列表

Return:

FormData

返回删除后的 FormData 对象

Test:

public deny(fn: Function): Function source

将一个谓词函数取反

Params:

NameTypeAttributeDescription
fn Function

要取反的函数

Return:

Function

取反得到的函数

Test:

public download(blob: Blob, filename: String) source

import {download} from 'rx-util/src/module/async/download.js'

在浏览器上下载二进制资源

Params:

NameTypeAttributeDescription
blob Blob

要下载的二进制资源

filename String

文件名

public async downloadString(str: String, filename: String) source

import {downloadString} from 'rx-util/src/module/async/downloadString.js'

在浏览器上下载文本内容

Params:

NameTypeAttributeDescription
str String

字符串内容

filename String
  • optional
  • default: 'unknown.txt'

下载文件名,没有则默认为链接中的文件名

public async downloadUrl(url: String, filename: String): * source

import {downloadUrl} from 'rx-util/src/module/async/downloadUrl.js'

根据 url 下载二进制资源

Params:

NameTypeAttributeDescription
url String

下载请求信息

filename String
  • optional

下载文件名,没有则默认为链接中的文件名

Return:

*

public emptyAllField(obj: Object): Object source

import {emptyAllField} from 'rx-util/src/module/obj/emptyAllField.js'

将对象的所有属性置空

Params:

NameTypeAttributeDescription
obj Object

需要置空属性的对象

Return:

Object

返回一个新的对象

Test:

public emptyFunc(args: Array<Object>) source

空的函数

Params:

NameTypeAttributeDescription
args Array<Object>

接受任何参数

Test:

public excludeFields(object: Object, fields: ...String | Symbol | Number): Object source

import {excludeFields} from 'rx-util/src/module/obj/excludeFields.js'

排除对象中的指定字段 注: 此处将获得一个浅拷贝对象

Params:

NameTypeAttributeDescription
object Object

排除对象

fields ...String | Symbol | Number

要排除的多个字段

Return:

Object

排除完指定字段得到的新的对象

Test:

public excludeFieldsDeep(object: Object, fields: ...Object): * source

import {excludeFieldsDeep} from 'rx-util/src/module/obj/excludeFieldsDeep.js'

递归排除对象中的指定字段

Params:

NameTypeAttributeDescription
object Object

需要排除的对象

fields ...Object

需要排除的字段

Return:

*

Test:

public fetchTimeout(fetchPromise: Promise, timeout: Number): Promise source

import {fetchTimeout} from 'rx-util/src/module/async/fetchTimeout.js'

为 fetch 请求添加超时选项 注:超时选项并非真正意义上的超时即取消请求,请求依旧正常执行完成,但会提前返回 reject 结果

Params:

NameTypeAttributeDescription
fetchPromise Promise

fetch 请求的 Promise

timeout Number

超时时间

Return:

Promise

如果超时就提前返回 reject, 否则正常返回 fetch 结果

public fill(item: String, len: Number): String source

this function was deprecated. 已废弃,请使用 ES6 {@link String.prototype.repeat} 函数,具体请参考 MDN {@url(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/repeat)}

填充字符串到指定长度

Params:

NameTypeAttributeDescription
item String

填充的字符串

len Number

填充的长度

Return:

String

填充完成的字符串

Test:

public filterItems(arr: Array, deleteItems: Array, kFn: Function): * source

import {filterItems} from 'rx-util/src/module/array/filterItems.js'

从数组中移除指定的元素 注: 时间复杂度为 1~3On

Params:

NameTypeAttributeDescription
arr Array

需要被过滤的数组

deleteItems Array

要过滤的元素数组

kFn Function
  • optional
  • default: returnItself

每个元素的唯一键函数

Return:

*

Test:

public flatMap(arr: Array<Object>, fn: function(item: Object): Array<Object>): Array<Object> source

import {flatMap} from 'rx-util/src/module/array/flatMap.js'

自行实现 flatMap,将数组压平一层

Params:

NameTypeAttributeDescription
arr Array<Object>

数组 // @ts-ignore

fn function(item: Object): Array<Object>

映射方法,将一个元素映射为一个数组

Return:

Array<Object>

压平一层的数组

Test:

public floatEquals(num1: Number, num2: Number): Boolean source

import {floatEquals} from 'rx-util/src/module/number/floatEquals.js'

比较两个浮点数是否相等 具体实现采用差值取绝对值并与 Number.EPSILON 比较的方式,如果小于浮点数最小差值,则认为它们是 [相等] 的

Params:

NameTypeAttributeDescription
num1 Number

第一个浮点数

num2 Number

第二个浮点数

Return:

Boolean

两数是否相等

Test:

public formDataToArray(fd: FormData): Array source

import {formDataToArray} from 'rx-util/src/module/formdata/formDataToArray.js'
this function was deprecated. 已被原生函数 Array.from 取代

FormData 转换为包含所有键值数组的二维数组函数

Params:

NameTypeAttributeDescription
fd FormData

需要转换的 FormData 对象

Return:

Array

转换后的数组

Test:

public format(str: String, args: Object): String source

this function was deprecated. 已废弃,请使用 ES6 模板字符串 {@url(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/template_strings)}

字符串格式化

Params:

NameTypeAttributeDescription
str String

要进行格式化的值

args Object

格式化参数值,替换字符串中的 {} 的值

Return:

String

替换完成的字符串

public getCookies(): Map<String, String> source

import {getCookies} from 'rx-util/src/module/async/getCookies.js'

获取 cookie 键值映射 Map

Return:

Map<String, String>

cookie 键值映射 Map

public getCusorPostion(el: HTMLFormElement): Number source

import {getCusorPostion} from 'rx-util/src/module/dom/getCusorPostion.js'

获取输入框中光标所在位置

Params:

NameTypeAttributeDescription
el HTMLFormElement

需要获取的输入框元素

Return:

Number

光标所在位置的下标

Test:

public getObjectEntries(object: Object): Array<String|Symbol> source

import {getObjectEntries} from 'rx-util/src/module/obj/getObjectEntries.js'

获取对象中所有的属性及对应的值,包括 ES6 新增的 Symbol 类型的属性

Params:

NameTypeAttributeDescription
object Object

任何对象

Return:

Array<String|Symbol>

属性及其对应值的二维数组

Test:

public getObjectKeys(object: Object): Array<PropertyKey> source

import {getObjectKeys} from 'rx-util/src/module/obj/getObjectKeys.js'
this function was deprecated. 已废弃,请使用 ES6 {@see Reflect.ownKeys} 代替,具体参考 {@link https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Reflect/ownKeys}

获取对象中所有的属性,包括 ES6 新增的 Symbol 类型的属性

Params:

NameTypeAttributeDescription
object Object

任何对象

Return:

Array<PropertyKey>

属性数组

Test:

public getObjectValues(object: Object): Array<String|Symbol> source

import {getObjectValues} from 'rx-util/src/module/obj/getObjectValues.js'

获取对象中所有的属性值,包括 ES6 新增的 Symbol 类型的属性

Params:

NameTypeAttributeDescription
object Object

任何对象

Return:

Array<String|Symbol>

属性值数组

Test:

public getSelectText(): String source

import {getSelectText} from 'rx-util/src/module/dom/getSelectText.js'

获取当前选中的文本

Return:

String

当前选中的文本

public getYearWeek(date: *): Number source

import {getYearWeek} from 'rx-util/src/module/date/getYearWeek.js'
this function was deprecated. 不推荐使用,请使用 {@link dateEnhance} 代替

获取一年内的第多少星期

Params:

NameTypeAttributeDescription
date *

Return:

Number

Test:

public groupBy(arr: Array<Object>, kFn: Function, vFn: Function, init: Function): Map<Object, Object> source

import {groupBy} from 'rx-util/src/module/array/groupBy.js'

js 数组按照某个条件进行分组

Params:

NameTypeAttributeDescription
arr Array<Object>

要进行分组的数组

kFn Function

元素分组的唯一标识函数

vFn Function
  • optional

元素分组的值处理的函数。第一个参数是累计值,第二个参数是当前正在迭代的元素,如果你使用过 Array#reduce 函数的话应该对此很熟悉

init Function
  • optional
  • default: []

每个分组的产生初始值的函数。类似于 reduce 的初始值,但它是一个函数,避免初始值在所有分组中进行累加。

Return:

Map<Object, Object>

元素标识 -> 数组映射 Map

Test:

public insertText(el: HTMLFormElement, text: String, start: Number) source

import {insertText} from 'rx-util/src/module/dom/insertText.js'

在指定位置后插入文本

Params:

NameTypeAttributeDescription
el HTMLFormElement

需要设置的输入框元素

text String

要插入的值

start Number
  • optional

开始位置,默认为当前光标处

Test:

public isBlank(str: String): Boolean source

import {isBlank} from 'rx-util/src/module/string/isBlank.js'
this function was deprecated. 已废弃,请使用 {@link stringValidator#isBlank}

判断一个字符串是否为空白的字符串

Params:

NameTypeAttributeDescription
str String

字符串

Return:

Boolean

是否为空字符串

Test:

public isEditable(el: Element): Boolean source

import {isEditable} from 'rx-util/src/module/dom/isEditable.js'

判断指定元素是否是可编辑元素 注:可编辑元素并不一定能够进行编辑,例如只读的 input 元素

Params:

NameTypeAttributeDescription
el Element

需要进行判断的元素

Return:

Boolean

是否为可编辑元素

Test:

public isEmpty(str: String): Boolean source

import {isEmpty} from 'rx-util/src/module/string/isEmpty.js'
this function was deprecated. 已废弃,请使用 {@link stringValidator#isEmpty}

判断一个字符串是否为空字符串

Params:

NameTypeAttributeDescription
str String

字符串

Return:

Boolean

是否为空字符串

public isFloat(str: String): Boolean source

import {isFloat} from 'rx-util/src/module/string/isFloat.js'
this function was deprecated. 已废弃,请使用 {@link stringValidator#isFloat}

判断字符串是否位小数

Params:

NameTypeAttributeDescription
str String

需要进行判断的字符串

Return:

Boolean

是否为小数

Test:

public isNullOrUndefined(object: Object): Boolean source

import {isNullOrUndefined} from 'rx-util/src/module/obj/isNullOrUndefined.js'

判断一个对象是否是无效的 无效的值包含 null/undefined

Params:

NameTypeAttributeDescription
object Object

任何一个对象

Return:

Boolean

是否无效的

Test:

public isNumber(str: String): Boolean source

import {isNumber} from 'rx-util/src/module/string/isNumber.js'
this function was deprecated. 已废弃,请使用 {@link stringValidator#isInteger}

判断字符串是否位整数

Params:

NameTypeAttributeDescription
str String

需要进行判断的字符串

Return:

Boolean

是否为小数

Test:

public isRange(num: Number, min: Number, max: Number): * source

import {isRange} from 'rx-util/src/module/number/isRange.js'

判断数字是否在指定区间之中

Params:

NameTypeAttributeDescription
num Number

指定数字

min Number

最小值

max Number

最大值(不包含)

Return:

*

Test:

public lastFocus(): Element source

import {lastFocus} from 'rx-util/src/module/dom/lastFocus.js'

获取到最后一个获得焦点的元素

Return:

Element

最后一个获取到焦点的元素

Test:

public listToTree(list: Array<Object>, options: Object): Object | Array<String> source

import {listToTree} from 'rx-util/src/module/tree/listToTree.js'

将列表转换为树节点 注: 该函数默认树的根节点只有一个,如果有多个,则返回一个数组

Params:

NameTypeAttributeDescription
list Array<Object>

树节点列表

options Object
  • optional

其他选项

options.isRoot Function
  • optional

判断节点是否为根节点。默认根节点的父节点为空

options.bridge Function
  • optional
  • default: returnItself

桥接函数,默认返回自身

Return:

Object | Array<String>

树节点,或是树节点列表

public async loadResource(url: RequestInfo, dom: HTMLImageElement | HTMLAudioElement | HTMLVideoElement | HTMLTrackElement | HTMLScriptElement, init: RequestInit) source

import {loadResource} from 'rx-util/src/module/async/loadResource.js'

将 url 中的内容加载到元素上 注:domSelector 必须有 src 属性用以将加载完成的资源赋值给其,加载默认是异步的

Params:

NameTypeAttributeDescription
url RequestInfo

url 资源

dom HTMLImageElement | HTMLAudioElement | HTMLVideoElement | HTMLTrackElement | HTMLScriptElement

dom 元素

init RequestInit
  • optional

初始化参数, 实为 fetch() 的参数以及一些自定义的参数,默认 {} 关于 fetch 具体可以参考 https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API/Using_Fetch

public loadScript(src: String): Promise source

import {loadScript} from 'rx-util/src/module/async/loadScript.js'

加载一个远程脚本文件

Params:

NameTypeAttributeDescription
src String

远程脚本路径

Return:

Promise

等待异步加载脚本完成

public mapToObject(map: Map): Object source

import {mapToObject} from 'rx-util/src/module/obj/mapToObject.js'

将 Map 转换为 Object 对象

Params:

NameTypeAttributeDescription
map Map

Map 键值表

Return:

Object

转换得到的 Object 对象

Test:

public objToFormData(data: *): FormData source

import {objToFormData} from 'rx-util/src/module/formdata/objToFormData.js'

将参数对象转换为 FormData,只转换一层

Params:

NameTypeAttributeDescription
data *

参数对象

Return:

FormData

转换后的表单对象

Test:

public objectToMap(obj: Object): Map source

import {objectToMap} from 'rx-util/src/module/obj/objectToMap.js'

将 Object 对象 转换为 Map

Params:

NameTypeAttributeDescription
obj Object

Object 对象

Return:

Map

转换得到的 Map 键值表

Test:

public once(fn: Function): Function source

将指定函数包装为只调用一次

Params:

NameTypeAttributeDescription
fn Function

需要包装的函数

Return:

Function

包装后的函数

Test:

public onceOfSameParam(fn: Function, paramConverter: Function): Function source

import {onceOfSameParam} from 'rx-util/src/module/function/onceOfSameParam.js'

包装一个函数为指定参数只执行一次的函数

Params:

NameTypeAttributeDescription
fn Function

需要包装的函数

paramConverter Function

参数转换的函数,参数为需要包装函数的参数

Return:

Function

需要被包装的函数

public parseUrl(url: *): * source

import {parseUrl} from 'rx-util/src/module/async/parseUrl.js'

Params:

NameTypeAttributeDescription
url *

Return:

*

Test:

public randomInt(args: Array<Number>): Number source

import {randomInt} from 'rx-util/src/module/number/randomInt.js'

生成一个随机的数字 如果没有参数,则会抛出异常

Params:

NameTypeAttributeDescription
args Array<Number>

参数列表,如果只有一个参数,则认为是最大值,最小值为 0。否则认为第一个是最小值,第二个是最大值,忽略剩余的参数

Return:

Number

生成的随机整数

Test:

public range(start: Number, end: Number, sep: Number): Array<Number> source

import {range} from 'rx-util/src/module/array/range.js'

创建一个等差数列数组

Params:

NameTypeAttributeDescription
start Number

开始(包含)

end Number

结束(不包含)

sep Number
  • optional

步长,默认为 1

Return:

Array<Number>

等差数列数组

Test:

public readLocal(file: File, option: Object): Promise source

import {readLocal} from 'rx-util/src/module/async/readLocal.js'

读取本地浏览器选择的文件

Params:

NameTypeAttributeDescription
file File

选择的文件

option Object

可选项参数

option.type readLocal.DataURL | readLocal.Text | readLocal.BinaryString | readLocal.ArrayBuffer
  • optional
  • default: readLocal.DataURL

读取的类型,默认按照二进制 url 读取

option.encoding String
  • optional
  • default: 'UTF-8'

读取的编码格式,默认为 UTF-8

Return:

Promise

返回了读取到的内容(异步)

public removeEl(el: Element): Element source

import {removeEl} from 'rx-util/src/module/dom/removeEl.js'

直接删除指定元素

Params:

NameTypeAttributeDescription
el Element

需要删除的元素

Return:

Element

返回被删除的元素

Test:

public removeText(el: HTMLFormElement, start: Number, end: Number) source

import {removeText} from 'rx-util/src/module/dom/removeText.js'

在指定范围内删除文本

Params:

NameTypeAttributeDescription
el HTMLFormElement

需要设置的输入框元素

start Number
  • optional

开始位置,默认为当前选中开始位置

end Number
  • optional

结束位置,默认为当前选中结束位置

Test:

public repeatedCall(num: Number, fn: Function, args: ...Object): Array source

import {repeatedCall} from 'rx-util/src/module/function/repeatedCall.js'

重复执行指定的函数

Params:

NameTypeAttributeDescription
num Number

重复的次数

fn Function

执行的函数,如果是异步函数,则返回 Array.<Promise>

args ...Object

参数

Return:

Array

执行返回结果

Test:

public returnItself(obj: Object): Object source

import {returnItself} from 'rx-util/src/module/function/returnItself.js'

返回第一个参数的函数 注: 一般可以当作返回参数自身的函数,如果你只关注第一个参数的话

Params:

NameTypeAttributeDescription
obj Object

任何对象

Return:

Object

传入的第一个参数

Test:

public returnReasonableItself(args: ...Object): undefined | Object | Array<Object> source

import {returnReasonableItself} from 'rx-util/src/module/function/returnReasonableItself.js'

返回合理参数本身的函数

  1. 如果没有参数则返回 undefined
  2. 如果只有一个参数则返回参数本身
  3. 如果有两个以上的参数则返回参数列表

Params:

NameTypeAttributeDescription
args ...Object

任何对象

Return:

undefined | Object | Array<Object>

传入的参数

Test:

public safeExec(fn: Function, defaultVal: Object, args: ...Object): Object | undefined source

安全执行某个函数

Params:

NameTypeAttributeDescription
fn Function

需要执行的函数

defaultVal Object
  • optional
  • default: null

发生异常后的默认返回值,默认为 null

args ...Object
  • optional

可选的函数参数

Return:

Object | undefined

函数执行的结果,或者其默认值

Test:

public setCusorPostion(el: HTMLFormElement, start: Number, end: Number) source

import {setCusorPostion} from 'rx-util/src/module/dom/setCusorPostion.js'

设置输入框中选中的文本/光标所在位置

Params:

NameTypeAttributeDescription
el HTMLFormElement

需要设置的输入框元素

start Number

光标所在位置的下标

end Number
  • optional
  • default: start

结束位置,默认为输入框结束

Test:

public sets(fd: FormData, obj: Object): FormData source

FormData 批量设置方法 注:该方法会覆盖掉原本的属性

Params:

NameTypeAttributeDescription
fd FormData

表单对象

obj Object

键值对对象

Return:

FormData

设置完成后的 FormData 对象

Test:

public singleModel(clazz: Object): Object source

import {singleModel} from 'rx-util/src/module/function/singleModel.js'

使用 Proxy 实现通用的单例模式

Params:

NameTypeAttributeDescription
clazz Object

需要包装为单例的类型

Return:

Object

包装后的单例模式类,使用 {@code new} 创建将只在第一次有效

Test:

public sleep(time: Number) source

阻塞主线程指定时间 注: 和 wait 不同,该函数会真的阻塞住主线程,即这段时间内其他的代码都无法执行,例如用户的点击事件!

Params:

NameTypeAttributeDescription
time Number

阻塞毫秒数

Test:

public sortBy(arr: Array, kFn: Function): Array source

import {sortBy} from 'rx-util/src/module/array/sortBy.js'

快速根据指定函数对数组进行排序 注: 使用递归实现,对于超大数组(其实前端的数组不可能特别大吧?#笑)可能造成堆栈溢出

Params:

NameTypeAttributeDescription
arr Array

需要排序的数组

kFn Function
  • optional
  • default: returnItself

对数组中每个元素都产生可比较的值的函数,默认返回自身进行比较

Return:

Array

排序后的新数组

Test:

public spliceParams(params: Object): String source

import {spliceParams} from 'rx-util/src/module/async/spliceParams.js'

拼接参数字符串

Params:

NameTypeAttributeDescription
params Object

参数对象

Return:

String

拼接后的字符串

Test:

public strToArrayBuffer(str: String): ArrayBuffer source

import {strToArrayBuffer} from 'rx-util/src/module/async/strToArrayBuffer.js'

将字符串转为字符流

Params:

NameTypeAttributeDescription
str String

字符串

Return:

ArrayBuffer

字符流对象

public strToDate(dateStr: String, fmt: String): Date source

import {strToDate} from 'rx-util/src/module/date/strToDate.js'
this function was deprecated. 已弃用,请使用可读性更好的 {@link dateParse} 代替

解析字符串为 Date 对象

Params:

NameTypeAttributeDescription
dateStr String

日期字符串

fmt String

日期字符串的格式 目前仅支持使用 y(年),M(月),d(日),h(时),m(分),s(秒),S(毫秒)

Return:

Date

解析得到的 Date 对象

Test:

public throttle(delay: Number, action: Function): Function source

函数节流 节流 (throttle) 让一个函数不要执行的太频繁,减少执行过快的调用,叫节流 类似于上面而又不同于上面的函数去抖, 包装后函数在上一次操作执行过去了最小间隔时间后会直接执行, 否则会忽略该次操作 与上面函数去抖的明显区别在连续操作时会按照最小间隔时间循环执行操作, 而非仅执行最后一次操作 注: 该函数第一次调用一定会执行,不需要担心第一次拿不到缓存值,后面的连续调用都会拿到上一次的缓存值 注: 返回函数结果的高阶函数需要使用 Proxy 实现,以避免原函数原型链上的信息丢失

Params:

NameTypeAttributeDescription
delay Number

最小间隔时间,单位为 ms

action Function

真正需要执行的操作

Return:

Function

包装后有节流功能的函数。该函数是异步的,与需要包装的函数 action 是否异步没有太大关联

Test:

public timing(fn: Function): Number | Promise source

测试函数的执行时间 注:如果函数返回 Promise,则该函数也会返回 Promise,否则直接返回执行时间

Params:

NameTypeAttributeDescription
fn Function

需要测试的函数

Return:

Number | Promise

执行的毫秒数

Test:

public toLowerCase(str: String): String source

import {toLowerCase} from 'rx-util/src/module/string/toLowerCase.js'

字符串安全的转换为小写

Params:

NameTypeAttributeDescription
str String

字符串

Return:

String

转换后得到的全小写字符串

Test:

public toObject(arr: Array<Object>, kFn: Function, vFn: Function): Object source

import {toObject} from 'rx-util/src/module/array/toObject.js'
this function was deprecated. 已废弃,请使用更好的 {@link arrayToMap} 替代

将数组转化为一个 Object 对象

Params:

NameTypeAttributeDescription
arr Array<Object>

需要进行转换的数组

kFn Function

生成对象属性名的函数

vFn Function
  • optional

生成对象属性值的函数,默认为数组中的迭代元素

Return:

Object

转化得到的对象

Test:

public toString(object: Object): String source

import {toString} from 'rx-util/src/module/string/toString.js'

将任意对象转换为 String 主要避免原生 Object toString 遇到某些空值的时候抛异常的问题

Params:

NameTypeAttributeDescription
object Object

任意对象

Return:

String

字符串

public toString(obj: Object): String source

import {toString} from 'rx-util/src/module/obj/toString.js'

默认实现的 toString 函数

Params:

NameTypeAttributeDescription
obj Object

对象

Return:

String

字符串

Test:

public toUpperCase(str: String): String source

import {toUpperCase} from 'rx-util/src/module/string/toUpperCase.js'

字符串安全的转换为大写

Params:

NameTypeAttributeDescription
str String

字符串

Return:

String

转换后得到的全大写字符串

Test:

public treeMapping(root: Object, options: Object): INode source

import {treeMapping} from 'rx-util/src/module/tree/treeMapping.js'

遍历并映射一棵树的每个节点

Params:

NameTypeAttributeDescription
root Object

树节点

options Object
  • optional

其他选项

options.before Function
  • optional
  • default: returnItself

遍历子节点之前的操作。默认返回自身

options.after Function
  • optional
  • default: returnItself

遍历子节点之后的操作。默认返回自身

options.paramFn Function
  • optional

递归的参数生成函数。默认返回一个空数组

Return:

INode

递归遍历后的树节点

public treeToList(root: Object, options: Object): Array<Object> source

import {treeToList} from 'rx-util/src/module/tree/treeToList.js'

将树节点转为树节点列表

Params:

NameTypeAttributeDescription
root Object

树节点

options Object
  • optional

其他选项

options.calcPath Boolean
  • optional
  • default: false

是否计算节点全路径,默认为 false

options.bridge Function
  • optional
  • default: returnItself

桥接函数,默认返回自身

Return:

Array<Object>

树节点列表

Test:

public trySometime(fn: Function, num: Number, errorCheck: Function): Function source

import {trySometime} from 'rx-util/src/module/function/trySometime.js'

包装一个函数为有错误重试功能的函数 注: 如果发生错误,最终将抛出最后一次调用的异常

Params:

NameTypeAttributeDescription
fn Function

需要被包装的函数

num Number
  • optional
  • default: 1

调用的次数。默认为 1

errorCheck Function
  • optional

检查返回结果是否需要重试的函数。默认只要 resolve() 就返回 true

Return:

Function

包装后的有错误重试功能的函数

Test:

public trySometimeParallel(fn: Function, num: Number, errorCheck: Function): Function source

import {trySometimeParallel} from 'rx-util/src/module/function/trySometimeParallel.js'

包装一个函数为有错误重试功能的函数 注意: 该函数是并行运行,所以一旦调用,就会同时调用 n 次,不管之前有没有失败。。。此函数不适合包装有副作用的操作,例如修改用户信息,请使用 trySometime 替代

Params:

NameTypeAttributeDescription
fn Function

需要被包装的函数

num Number
  • optional
  • default: 1

调用的次数。默认为 1

errorCheck Function
  • optional

检查返回结果是否需要重试的函数。默认只要 resolve() 就返回 true

Return:

Function

包装后的有错误重试功能的函数

Test:

public uniqueBy(arr: Array<Object>, kFn: Function): Array<Object> source

import {uniqueBy} from 'rx-util/src/module/array/uniqueBy.js'

js 的数组去重方法

Params:

NameTypeAttributeDescription
arr Array<Object>

要进行去重的数组

kFn Function
  • optional
  • default: returnItself

唯一标识元素的方法,默认使用 returnItself

Return:

Array<Object>

进行去重操作之后得到的新的数组 (原数组并未改变)

Test:

public wait(param: Number | Function): Promise source

等待指定的时间/等待指定表达式成立 如果未指定等待条件则立刻执行 注: 此实现会存在宏任务与微任务的问题,切记 async-await 本质上还是 Promise 的语法糖,实际上并非真正的同步函数!!!

Params:

NameTypeAttributeDescription
param Number | Function
  • optional

等待时间/等待条件

Return:

Promise

Promise 对象

Test:

public waitResource(fn: Function, option: Object): * source

import {waitResource} from 'rx-util/src/module/function/waitResource.js'

轮询等待指定资源加载完毕再执行操作 使用 Promises 实现,可以使用 ES7 的 {@async}/{@await} 调用

Params:

NameTypeAttributeDescription
fn Function

判断必须的资源是否存在的方法

option Object

可配置项

option.interval Number
  • optional
  • default: 100

轮询间隔

option.max Number
  • optional
  • default: 10

最大轮询次数

Return:

*

Promise 对象

Test:

public watch(fn: Function, callback: Function, interval: Number): Function source

监视指定函数返回值的变化

Params:

NameTypeAttributeDescription
fn Function

需要监视的函数

callback Function

回调函数

interval Number
  • optional
  • default: 100

每次检查的间隔时间,默认为 100ms

Return:

Function

关闭这个监视函数

Test:

public watchEventListener() source

import {watchEventListener} from 'rx-util/src/module/event/watchEventListener.js'

监听 event 的添加 注:必须及早添加

public watchObject(object: Object, callback: WatchObjectCallback): Object source

import {watchObject} from 'rx-util/src/module/function/watchObject.js'

深度监听指定对象属性的变化 注:指定对象不能是原始类型,即不可变类型,而且对象本身的引用不能改变,最好使用 const 进行声明

Params:

NameTypeAttributeDescription
object Object

需要监视的对象

callback WatchObjectCallback

当代理对象发生改变时的回调函数,回调函数有三个参数,分别是

Return:

Object

返回源对象的一个代理

Test: