English 中文

所有源代码均托管在 GitHub 上.

如果发现 bug 或有改进意见,可以到上边地址发起 issue 帮助我们让该项目变得更好:)

使用 npm 安装:

Use as an npm package:

npm i licia --save
var uuid = require('licia/uuid');

console.log(uuid()); // -> 0e3b84af-f911-4a55-b78a-cedf6f0bd815

$

source test

类似 jQuery 的 dom 操作库。

支持方法列表

offset, hide, show, first, last, get, eq, on, off, html, text, val, css, attr, data, rmAttr, remove, addClass, rmClass, toggleClass, hasClass, append, prepend, before, after

var $btn = $('#btn');
$btn.html('eustia');
$btn.addClass('btn');
$btn.show();
$btn.on('click', function () {
    // Do something...
});

$attr

source test

操作元素属性。

获取元素集中第一个元素的指定属性值。

参数名类型说明
elementstring array element目标元素集
namestring属性名
返回值string第一个元素的属性值

设置元素集中一个或多个属性的值。

参数名类型说明
elementstring array element目标元素集
namestring属性名
valuestring属性值
参数名类型说明
elementstring array element目标元素集
attributesobject包含多个要设置属性-值对的对象

remove

对元素集中的所有元素,移除指定的属性。

参数名类型说明
elementstring array element目标元素集
namestring属性名
$attr('#test', 'attr1', 'test');
$attr('#test', 'attr1'); // -> test
$attr.remove('#test', 'attr1');
$attr('#test', {
    'attr1': 'test',
    'attr2': 'test'
});

$class

source test

操作元素 class。

add

对元素集中的所有元素,添加指定的 class。

参数名类型说明
elementstring array element目标元素集
namesstring array添加的 class

has

判断元素集中是否有元素含有指定的 class。

参数名类型说明
elementstring array element目标元素集
namestringclass 值
返回值boolean如果有,返回真

toggle

对于元素集中的每个元素,如果含有指定的 class 就将其删除,反之则添加。

参数名类型说明
elementstring array element目标元素集
namestringclass 值

remove

对于元素集中的所有元素,移除指定的 class。

参数名类型说明
elementstring array element目标元素集
namestringclass 值
$class.add('#test', 'class1');
$class.add('#test', ['class1', 'class2']);
$class.has('#test', 'class1'); // -> true
$class.remove('#test', 'class1');
$class.has('#test', 'class1'); // -> false
$class.toggle('#test', 'class1');
$class.has('#test', 'class1'); // -> true

$css

source test

操作元素样式。

获取元素集中第一个元素的指定样式。

参数名类型说明
elementstring array element目标元素集
namestring样式名
返回值string样式值

设置元素集中一个或多个样式的值。

参数名类型说明
elementstring array element目标元素集
namestring样式名
valuestring样式值
参数名类型说明
elementstring array element目标元素集
propertiesobject包含多个要设置样式-值对的对象
$css('#test', {
    color: '#fff',
    background: 'black'
});
$css('#test', 'display', 'block');
$css('#test', 'color'); // -> #fff

$data

source test

同 $attr,自动给属性名加 data- 前缀。

$data('#test', 'attr1', 'eustia');

$event

source test

给指定 dom 元素绑定事件。

function clickHandler() {
    // Do something...
}
$event.on('#test', 'click', clickHandler);
$event.off('#test', 'click', clickHandler);

$insert

source test

插入 html 到不同位置。

before

插入 html 到元素前。

after

插入 html 到元素后。

prepend

插入 html 到元素内部前。

append

插入 html 到元素内部后。

参数名类型说明
elementstring array element目标元素集
contentstringhtml 字符串
// <div id="test"><div class="mark"></div></div>
$insert.before('#test', '<div>licia</div>');
// -> <div>licia</div><div id="test"><div class="mark"></div></div>
$insert.after('#test', '<div>licia</div>');
// -> <div id="test"><div class="mark"></div></div><div>licia</div>
$insert.prepend('#test', '<div>licia</div>');
// -> <div id="test"><div>licia</div><div class="mark"></div></div>
$insert.append('#test', '<div>licia</div>');
// -> <div id="test"><div class="mark"></div><div>licia</div></div>

$offset

source test

获取元素在文档中的位置。

参数名类型说明
elementstring array element目标元素集
$offset('#test'); // -> {left: 0, top: 0, width: 0, height: 0}

$property

source test

设置或获取元素的 html, text,val 等值。

html

设置或获取元素的 html 值。

text

设置或获取元素的 text 值。

val

设置或获取元素的 val 值。

$property.html('#test', 'licia');
$property.html('#test'); // -> licia

$remove

source test

移除指定元素集。

参数名类型说明
elementstring array element目标元素集
$remove('#test');

$safeEls

source test

将值转换为数组,如果值为字符串,使用 querySelector 获取元素集。

参数名类型说明
valueelement array string要转换的值
返回值array元素集
$safeEls(document.querySelector('.test'));
$safeEls(document.querySelectorAll('.test'));
$safeEls('.test'); // -> Array of elements with test class

$show

source test

显示元素。

参数名类型说明
elementstring array element目标元素集
$show('#test');

Blob

source test

如果支持 Blob,直接返回 Blob,否则使用 BlobBuilder 进行兼容。

constructor

参数名类型说明
partsarrayBlob 分片
[opts]object选项
var blob = new Blob([]);

Class

source test demo

创建 JavaScript 类。

参数名类型说明
methodsobject公有方法
[statics]object静态方法
返回值function用于创建实例的函数
var People = Class({
    initialize: function People(name, age) {
        this.name = name;
        this.age = age;
    },
    introduce: function () {
        return 'I am ' + this.name + ', ' + this.age + ' years old.';
    }
});

var Student = People.extend({
    initialize: function Student(name, age, school) {
        this.callSuper(People, 'initialize', arguments);

        this.school = school;
    },
    introduce: function () {
        return this.callSuper(People, 'introduce') + '\n I study at ' + this.school + '.';
    }
}, {
    is: function (obj) {
        return obj instanceof Student;
    }
});

var a = new Student('allen', 17, 'Hogwarts');
a.introduce(); // -> 'I am allen, 17 years old. \n I study at Hogwarts.'
Student.is(a); // -> true

Color

source test

颜色转换。

constructor

参数名类型说明
colorstring object要转换的颜色

toRgb

获取颜色 rgb 格式。

toHex

获取颜色十六进制格式。

toHsl

获取颜色 hsl 格式。

parse

【静态】将颜色字符串转换为含有值及颜色模型的对象。

参数名类型说明
colorstring颜色字符串
返回值object含有值及颜色模型的对象
Color.parse('rgb(170, 287, 204, 0.5)'); // -> {val: [170, 187, 204, 0.5], model: 'rgb'}
var color = new Color('#abc');
color.toRgb(); // -> 'rgb(170, 187, 204)'
color.toHsl(); // -> 'hsl(210, 25%, 73%)'

Dispatcher

source test

Flux 调度器。

相关文档

var dispatcher = new Dispatcher();

dispatcher.register(function (payload) {
   switch (payload.actionType) {
       // Do something
   }
});

dispatcher.dispatch({
    actionType: 'action'
});

Emitter

source test

提供观察者模式的 Event emitter 类。

on

绑定事件。

off

解绑事件。

once

绑定只触发一次的事件。

参数名类型说明
eventstring事件名称
listenerfunction事件监听器

emit

触发事件。

参数名类型说明
eventstring事件名称
...args*传递给监听器的参数

mixin

【静态】 将 Emitter 类的方法绑定到指定对象上去。

参数名类型说明
objobject目标对象
var event = new Emitter();
event.on('test', function () { console.log('test') });
event.emit('test'); // Logs out 'test'.
Emitter.mixin({});

Enum

source test

Enum 类实现。

constructor

参数名类型说明
arrarray字符串数组
参数名类型说明
objobject键值对
var importance = new Enum([
    'NONE', 'TRIVIAL', 'REGULAR', 'IMPORTANT', 'CRITICAL'
]);
const val = 1;
if (val === importance.CRITICAL) {
    // Do something.
}

JsonTransformer

source test

JSON 转换器。

constructor

参数名类型说明
[data={}]object目标 JSON 对象

set

设置属性值。

参数名类型说明
[key]string属性路径
val*

如果属性路径为空,整个对象将被值替换。

get

获取属性值。

参数名类型说明
[key]string属性路径
返回值*指定值或整个对象

remove

移除属性值。

参数名类型说明
keyarray string属性路径

map

数组 map 的快捷方式。

参数名类型说明
fromstring源对象路径
tostring目标对象路径
fnfunction真值检测函数

filter

数组 filter 的快捷方式。

compute

从多个属性值计算新值。

参数名类型说明
fromarray string源属性路径
tostring目标属性路径
fnfunction计算函数
var data = new JsonTransformer({
    books: [{
        title: 'Book 1',
        price: 5
    }, {
        title: 'Book 2',
        price: 10
    }],
    author: {
        lastname: 'Su',
        firstname: 'RedHood'
    }
});
data.filter('books', function (book) { return book.price > 5 });
data.compute('author', function (author) { return author.firstname + author.lastname });
data.set('count', data.get('books').length);
data.get(); // -> {books: [{title: 'Book 2', price: 10}], author: 'RedHoodSu', count: 1}

LinkedList

source test

双向链表实现。

push

向链表尾部添加值。

参数名类型说明
val*要添加的值
返回值number链表大小

pop

获取链表尾部值。

unshift

向链表头部添加值。

shift

获取链表头部值。

forEach

遍历链表。

toArr

将链表转换成 JavaScript 数组。

var linkedList = new LinkedList();
linkedList.push(5);
linkedList.pop(); // -> 5

LocalStore

source test

LocalStorage 存储。

继承自 Store 类。

constructor

参数名类型说明
namestringLocalStorage 存储名
dataobject默认数据
var store = new LocalStore('licia');
store.set('name', 'licia');

Logger

source test demo

带日志级别的简单日志库。

constructor

参数名类型说明
namestring日志名称
level=DEBUGnumber日志级别

setLevel

设置日志级别。

参数名类型说明
levelnumber string日志级别

getLevel

获取当前日志级别。

trace,debug,info,warn,error

打日志方法。

日志级别

TRACE,DEBUG,INFO,WARN,ERROR 和 SILENT。

var logger = new Logger('licia', Logger.level.ERROR);
logger.trace('test');

// Format output.
logger.formatter = function (type, argList) {
    argList.push(new Date().getTime());

    return argList;
};

logger.on('all', function (type, argList) {
    // It's not affected by log level.
});

logger.on('debug', function (argList) {
    // Affected by log level.
});

MutationObserver

source test

MutationObserver 安全版本,如果不支持,则什么也不做。

var observer = new MutationObserver(function (mutations) {
    // Do something.
});
observer.observe(document.documentElement);
observer.disconnect();

Promise

source test demo

轻量 Promise 实现。

Promises 标准

function get(url) {
    return new Promise(function (resolve, reject) {
        var req = new XMLHttpRequest();
        req.open('GET', url);
        req.onload = function () {
            req.status == 200 ? resolve(req.response) : reject(Error(req.statusText));
        };
        req.onerror = function () { reject(Error('Network Error')) };
        req.send();
    });
}

get('test.json').then(function (result) {
    // Do something...
});

PseudoMap

source test

类似 es6 的 Map,不支持遍历器。

只支持字符串键名,当 Map 存在时会直接使用 Map。

var map = new PseudoMap();
map.set('1', 1);
map.get('1'); // -> 1

Queue

source test

队列数据结构。

clear

清空队列。

enqueue

元素入列。

参数名类型说明
item*入列元素
返回值number当前大小

dequeue

元素出列。

peek

获取第一个元素但不移除它。

forEach

遍历队列。

参数名类型说明
iteratorfunction调用函数
[ctx]*函数上下文

toArr

将队列转换为 JavaScript 数组。

var queue = new Queue();

console.log(queue.size); // -> 0
queue.enqueue(2);
queue.enqueue(3);
queue.dequeue(); // -> 2
console.log(queue.size); // -> 1
queue.peek(); // -> 3
console.log(queue.size); // -> 1

ReduceStore

source test

简单类 redux 状态管理。

constructor

参数名类型说明
reducerfunction生成下一个状态的函数
initialState*初始状态

subscribe

订阅状态改变事件。

参数名类型说明
listenerfunction回调函数
返回值function取消订阅函数

dispatch

发出动作。

参数名类型说明
actionobject描述改变内容的对象
返回值object传入对象

getState

获取当前状态。

var store = new ReduceStore(function (state, action) {
    switch (action.type) {
        case 'INCREMENT': return state + 1;
        case 'DECREMENT': return state - 1;
        default: return state;
    }
}, 0);

store.subscribe(function () {
    console.log(store.getState());
});

store.dispatch({type: 'INCREMENT'}); // 1
store.dispatch({type: 'INCREMENT'}); // 2
store.dispatch({type: 'DECREMENT'}); // 1

Select

source test

querySelectorAll 的简单包装类。

constructor

参数名类型说明
selectorstring选择器

find

查找子元素。

参数名类型说明
selectorstring选择器

each

遍历匹配的元素。

参数名类型说明
fnfunction调用函数
var $test = new Select('#test');
$test.find('.test').each(function (idx, element) {
    // Manipulate dom nodes
});

SessionStore

source test

SessionStorage 存储。

继承自 Store 类。

constructor

参数名类型说明
namestringSessionStorage 存储名
dataobject默认数据
var store = new SessionStore('licia');
store.set('name', 'licia');

Stack

source test

栈数据结构。

clear

清空栈。

push

元素入栈。

参数名类型说明
item*入栈元素
返回值number当前大小

pop

元素出栈。

peek

获取最后一个元素但不移除它。

forEach

遍历栈。

参数名类型说明
iteratorfunction调用函数
[ctx]*函数上下文

toArr

将栈转换为 JavaScript 数组。

var stack = new Stack();

stack.push(2); // -> 1
stack.push(3); // -> 2
stack.pop(); // -> 3

State

source test

简单状态机。

继承自 Emitter 类。

constructor

参数名类型说明
initialstring初始状态
eventsobject改变状态的事件

is

检查当前状态是否是指定状态。

参数名类型说明
valuestring要检查的状态
返回值boolean如果是,返回真
var state = new State('empty', {
    load: {from: 'empty', to: 'pause'},
    play: {from: 'pause', to: 'play'},
    pause: {from: ['play', 'empty'], to: 'pause'},
    unload: {from: ['play', 'pause'], to: 'empty'}
});

state.is('empty'); // -> true
state.load();
state.is('pause'); // -> true
state.on('play', function (src) {
    console.log(src); // -> 'eustia'
});
state.on('error', function (err, event) {
    // Error handler
});
state.play('eustia');

Store

source test

内存存储。

继承自 Emitter 类。

constructor

参数名类型说明
dataobject初始数据

set

设置值。

参数名类型说明
keystring键名
val*键值

设置多个值。

参数名类型说明
valsobject包含多个键值对的对象

该方法被调用时发触发 change 事件。

get

获取值。

参数名类型说明
keystring键名
返回值*键值

获取多个值。

参数名类型说明
keysarray键名列表
返回值object包含多个键值对的对象

remove

移除值。

参数名类型说明
keystring array键名

clear

清空数据。

each

遍历数据。

参数名类型说明
fnfunction遍历函数
var store = new Store('test');
store.set('user', {name: 'licia'});
store.get('user').name; // -> 'licia'
store.clear();
store.each(function (val, key) {
    // Do something.
});
store.on('change', function (key, newVal, oldVal) {
    // It triggers whenever set is called.
});

Tween

source test demo

JavaScript 补间动画库。

继承自 Emitter 类。

constructor

参数名类型说明
objobject要补间的对象

to

参数名类型说明
destinationobj目标属性值
durationnumber补间时长
easestring function缓动函数

play

开始播放。

pause

暂停动画。

paused

检查动画是否暂停。

progress

设置或获取动画进度。

参数名类型说明
[progress]number介于 0 到 1 之间的数字
var pos = {x: 0, y: 0};

var tween = new Tween(pos);
tween.on('update', function (target) {
    console.log(target.x, target.y);
}).on('end', function (target) {
    console.log(target.x, target.y); // -> 100, 100
});
tween.to({x: 100, y: 100}, 1000, 'inElastic').play();

Url

source test

简单 url 操作库。

constructor

参数名类型说明
url=locationstringurl 地址

setQuery

设置 query 值。

参数名类型说明
namestringquery 名
valuestringquery 值
返回值Urlthis
参数名类型说明
queryobjectquery 对象
返回值Urlthis

rmQuery

移除 query 值。

参数名类型说明
namestring arrayquery 名
返回值Urlthis

parse

【静态】将 url 解析成对象。

参数名类型说明
urlstringurl 地址
返回值objecturl 对象

stringify

【静态】将 url 对象转换为 url 地址。

参数名类型说明
urlobjecturl 对象
返回值stringurl 地址

url 对象包含以下属性值:

属性名说明
protocol协议名,(如 http:)
slashes协议名后是否有双斜杠
auth身份验证(例如 用户名:密码)
hostnameHost 名,不带端口号
port端口号
pathnameURL 路径
queryquery 对象
hashURL # 字符后边的部分,# 包含在内
var url = new Url('http://example.com:8080?eruda=true');
console.log(url.port); // -> '8080'
url.query.foo = 'bar';
url.rmQuery('eruda');
url.toString(); // -> 'http://example.com:8080/?foo=bar'

Validator

source test

对象属性值校验。

constructor

参数名类型说明
optionsobject校验配置

validate

校验对象。

参数名类型说明
objobject目标对象
返回值*校验结果,true 表示通过

addPlugin

【静态】添加插件。

参数名类型说明
namestring插件名
pluginfunction校验函数

默认插件

required,number,boolean,string 和 regexp。

Validator.addPlugin('custom', function (val, key, config) {
    if (typeof val === 'string' && val.length === 5) return true;

    return key + ' should be a string with length 5';
});
var validator = new Validator({
    'test': {
        required: true,
        custom: true
    }
});
validator.validate({}); // -> 'test is required'
validator.validate({test: 1}); // -> 'test should be a string with length 5';
validator.validate({test: 'licia'}); // -> true

abbrev

source test

计算字符串集的缩写集合。

参数名类型说明
...arrstring字符串集
返回值object缩写集合
abbrev('lina', 'luna');
// -> {li: 'lina', lin: 'lina', lina: 'lina', lu: 'luna', lun: 'luna', luna: 'luna'}

after

source test

创建一个函数,只有在调用 n 次后才会调用一次。

参数名类型说明
nnumber调用次数
fnfunction源函数
返回值function输出函数
var fn = after(5, function() {
    // -> Only invoke after fn is called 5 times.
});

ajax

source test

执行异步 HTTP 请求。

参数名类型说明
optionsobjectAjax 选项

可用选项:

参数名类型说明
typestring请求类型
urlstring请求地址
datastring object请求数据
dataType=jsonstring响应类型(json,xml)
contentType=application/x-www-form-urlencodedstring请求内容类型
successfunction成功回调
errorfunction失败回调
completefunction结束回调
timeoutnumber请求超时

get

type = GET 的快捷方式。

post

type = POST 的快捷方式。

参数名类型说明
urlstring请求地址
[data]string object请求数据
successfunction成功回调
dataTypefunction响应类型
ajax({
    url: 'http://example.com',
    data: {test: 'true'},
    error() {},
    success(data) {
        // ...
    },
    dataType: 'json'
});

ajax.get('http://example.com', {}, function (data) {
    // ...
});

allKeys

source test

获取对象的所有键名,包括自身的及继承的。

参数名类型说明
objobject目标对象
返回值array包含所有键名的数组

Object 对象原型上的方法不会被获取到。

var obj = Object.create({zero: 0});
obj.one = 1;
allKeys(obj) // -> ['zero', 'one']

ansiColor

source test

控制台颜色。

支持颜色

black, red, green, yellow, blue, magenta, cyan, white, gray, grey

bgBlack, bgRed, bgGreen, bgYellow, bgBlue, bgMagenta, bgCyan, bgWhite,

blackBright, redBright, greenBright, yellowBright, blueBright, magentaBright, cyanBright, whiteBright

bgBlackBright, bgRedBright, bgGreenBright, bgYellowBright, bgBlueBright, bgMagentaBright, bgCyanBright, bgWhiteBright

ansiColor.red('Warning');

arrToMap

source test

将字符串列表转换为映射。

参数名类型说明
arrarray字符串列表
val=true*键值
返回值object映射
const needPx = arrToMap([
    'column-count', 'columns', 'font-weight', 'line-weight', 'opacity', 'z-index', 'zoom'
]);
const key = 'column-count';
let val = '5';
if (needPx[key]) val += 'px';
console.log(val); // -> '5px'

atob

source test

window.atob,运行在 node 环境时使用 Buffer 进行模拟。

atob('SGVsbG8gV29ybGQ='); // -> 'Hello World'

average

source test

获取数字的平均值。

参数名类型说明
...numnumber要计算的数字
返回值number平均值
average(5, 3, 1); // -> 3

base64

source test

base64 编解码。

encode

将字节数组编码为 base64 字符串。

参数名类型说明
arrarray字节数组
返回值stringbase64 编码的字符串

decode

将 base64 字符串解码为字节数组。

参数名类型说明
strstringbase64 编码的字符串
返回值array字节数组
base64.encode([168, 174, 155, 255]); // -> 'qK6b/w=='
base64.decode('qK6b/w=='); // -> [168, 174, 155, 255]

before

source test

创建一个函数,只能调用少于 n 次。

参数名类型说明
nnumber调用次数
fnfunction源函数
返回值function输出函数

超过 n 次后再次调用函数将直接返回最后一次函数的调用结果。

const fn = before(5, function() {});
fn(); // Allow function to be call 4 times at last.

binarySearch

source test

二分查找实现。

参数名类型说明
arrayarray目标数组
value*要查找的值
[comparator]function比较器
返回值number第一次出现的位置,如果没有,返回 -1
binarySearch([1, 2, 3], 2); // -> 1
binarySearch([1, 2], 3); // -> -1
binarySearch(
    [
        {
            key: 1
        },
        {
            key: 2
        }
    ],
    { key: 1 },
    (a, b) => {
        if (a.key === b.key) return 0;
        return a.key < b.key ? -1 : 1;
    }
); // -> 0

bind

source test

创建一个绑定到指定对象的函数。

参数名类型说明
fnfunction源函数
ctx*绑定对象
...rest*可选参数
返回值function输出函数
var fn = bind(function (msg) {
    console.log(this.name + ':' + msg);
}, {name: 'eustia'}, 'I am a utility library.');
fn(); // -> 'eustia: I am a utility library.'

btoa

source test

window.btoa,运行在 node 环境时使用 Buffer 进行模拟。

btoa('Hello World'); // -> 'SGVsbG8gV29ybGQ='

bubbleSort

source test

冒泡排序实现。

参数名类型说明
arrarray要排序的数组
[cmp]function比较器
返回值array有序数组
bubbleSort([2, 1]); // -> [1, 2]

bytesToStr

source test

将字节数组转换为字符串。

参数名类型说明
strarray字节数组
返回值string目标字符串
bytesToStr([108, 105, 99, 105, 97]); // -> 'licia'

callbackify

source test

将返回 Promise 的函数转换为使用回调的函数。

参数名类型说明
fnfunction返回 Promise 的函数
返回值function使用回调的函数
function fn() {
    return new Promise(function (resolve, reject) {
        // ...
    });
}

var cbFn = callbackify(fn);

cbFn(function (err, value) {
    // ...
});

camelCase

source test

将字符串转换为驼峰式。

参数名类型说明
strstring源字符串
返回值string驼峰式字符串
camelCase('foo-bar'); // -> fooBar
camelCase('foo bar'); // -> fooBar
camelCase('foo_bar'); // -> fooBar
camelCase('foo.bar'); // -> fooBar

capitalize

source test

将字符串的第一个字符转换为大写,其余字符转换为小写。

参数名类型说明
strstring源字符串
返回值string目标字符串
capitalize('rED'); // -> Red

castPath

source test

将值转换为属性路径数组。

参数名类型说明
pathstring array要转换的值
[obj]object目标对象
返回值array属性路径数组
castPath('a.b.c'); // -> ['a', 'b', 'c']
castPath(['a']); // -> ['a']
castPath('a[0].b'); // -> ['a', '0', 'b']
castPath('a.b.c', {'a.b.c': true}); // -> ['a.b.c']

centerAlign

source test

字符串居中。

参数名类型说明
strstring array源字符串
[width]number每行宽度
返回值string居中字符串
centerAlign('test', 8); // -> '  test'
centerAlign('test\nlines', 8); // -> '  test\n lines'
centerAlign(['test', 'lines'], 8); // -> '  test\n lines'

char

source test

根据指定的整数返回 unicode 编码为该整数的字符。

参数名类型说明
numnumber要转换的整数
返回值string对应字符
char(65); // -> 'A'
char(97); // -> 'a'

chunk

source test

将数组拆分为指定长度的子数组。

参数名类型说明
arrarray源数组
size=1number子数组的长度
返回值array目标数组
chunk([1, 2, 3, 4], 2); // -> [[1, 2], [3, 4]]
chunk([1, 2, 3, 4], 3); // -> [[1, 2, 3], [4]]
chunk([1, 2, 3, 4]); // -> [[1], [2], [3], [4]]

clamp

source test

将数字限定于指定区间。

参数名类型说明
nnumber要处理的数字
[lower]number下限
uppernumber上限
返回值number限定后的数字
clamp(-10, -5, 5); // -> -5
clamp(10, -5, 5); // -> 5
clamp(2, -5, 5); // -> 2
clamp(10, 5); // -> 5
clamp(2, 5); // -> 2

className

source test

合并 class。

参数名类型说明
...classstring object array要合并的 class
返回值string合并后的 class 字符串
className('a', 'b', 'c'); // -> 'a b c'
className('a', false, 'b', 0, 1, 'c'); // -> 'a b 1 c'
className('a', ['b', 'c']); // -> 'a b c'
className('a', {b: false, c: true}); // -> 'a c'
className('a', ['b', 'c', {d: true, e: false}]); // -> 'a b c d';

clone

source test

对指定对象进行浅复制。

任何嵌套的对象或数组只会拷贝其引用。

参数名类型说明
val*要克隆的值
返回值*克隆值
clone({name: 'eustia'}); // -> {name: 'eustia'}

cloneDeep

source test

深复制。

参数名类型说明
val*要克隆的值
返回值*克隆值
var obj = [{a: 1}, {a: 2}];
var obj2 = cloneDeep(obj);
console.log(obj[0] === obj2[1]); // -> false

cmpVersion

source test

比较版本号。

参数名类型说明
v1string版本号
v2string版本号
返回值number比较结果
cmpVersion('1.1.8', '1.0.4'); // -> 1
cmpVersion('1.0.2', '1.0.2'); // -> 0
cmpVersion('2.0', '2.0.0'); // -> 0
cmpVersion('3.0.1', '3.0.0.2'); // -> 1
cmpVersion('1.1.1', '1.2.3'); // -> -1

combine

source test

创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值。

参数名类型说明
keysarray键名数组
valuesarray键值数组
返回值object目标对象
combine(['a', 'b', 'c'], [1, 2, 3]); // -> {a: 1, b: 2, c: 3}

compact

source test

返回数组的拷贝并移除其中的虚值。

虚值包括 false,null,0,空字符串,undefined 和 NaN。

参数名类型说明
arrarray源数组
返回值array目标数组
compact([0, 1, false, 2, '', 3]); // -> [1, 2, 3]

compose

source test

将多个函数组合成一个函数。

每个函数使用下一个函数的返回值作为参数。

参数名类型说明
...fnfunction要组合的函数
返回值function目标函数
var welcome = compose(function (name) {
    return 'hi: ' + name;
}, function (name) {
    return name.toUpperCase() + '!';
});

welcome('licia'); // -> 'hi: LICIA!'

compressImg

source test demo

使用 canvas 对图像进行压缩。

参数名类型说明
fileFile Blob图片文件
[opts]object选项
[cb]function回调

可用选项:

参数名类型说明
maxWidthnumber最大宽度
maxHeightnumber最大高度
widthnumber输出图片宽度
heightnumber输出图片高度
mimeTypestringMine 类型
quality=0.8number图片质量,从 0 到 1

为了保持图片比例,当宽度设置时高度将被忽略。

如果设置了宽高,最大宽度跟最大高度将被忽略。

const file = new Blob([]);
compressImg(file, {
    maxWidth: 200
}, function (err, file) {
    // ...
});

concat

source test

将多个数组合并成一个数组。

参数名类型说明
...arrarray要合并的数组
返回值array合并后的数组
concat([1, 2], [3], [4, 5]); // -> [1, 2, 3, 4, 5]

contain

source test

检查数组中是否有指定值。

参数名类型说明
targetarray object目标对象
value*要检查的值
返回值boolean如果有,返回真
contain([1, 2, 3], 1); // -> true
contain({a: 1, b: 2}, 1); // -> true

convertBase

source test

对数字进行进制转换。

参数名类型说明
numnumber string要转换的数字
fromnumber源进制
tonumber目标进制
返回值string转换后的数字
convertBase('10', 2, 10); // -> '2'
convertBase('ff', 16, 2); // -> '11111111'

source test

浏览器 cookie 操作库。

get

获取 cookie 值。

参数名类型说明
keystringCookie 键名
返回值string对应的 cookie 值

set

设置 cookie 值。

参数名类型说明
keystringcookie 键名
valstringcookie 值
[options]objectcookie 选项
返回值exportscookie 模块

remove

移除 cookie 值。

参数名类型说明
keystringCookie 键名
[options]objectCookie 选项
返回值exportscookie 模块
cookie.set('a', '1', {path: '/'});
cookie.get('a'); // -> '1'
cookie.remove('a');

copy

source test demo

使用 document.execCommand 将文本拷贝到剪贴板。

参数名类型说明
textstring要拷贝的文本
[cb]function可选回调
copy('text', function (err) {
    // Handle errors.
});

createAssigner

source test

用于创建 extend,extendOwn 和 defaults 等模块。

参数名类型说明
keysFnfunction获取对象键名的函数
defaultsboolean设置为真时不对值进行覆盖
返回值function目标函数

createUrl

source test

CreateObjectURL 的包裹函数。

参数名类型说明
dataFile Blob string array数据
[opts]object当数据不是 File 或者 Blob 对象时使用
返回值stringBlob 地址
createUrl('test', {type: 'text/plain'}); // -> Blob url
createUrl(['test', 'test']);
createUrl(new Blob([]));
createUrl(new File(['test'], 'test.txt'));

cssSupports

source test

检查浏览器是否支持某项 CSS 特性。

参数名类型说明
namestringCss 属性名
[val]stringCss 属性值
返回值boolean如果支持,返回真
cssSupports('display', 'flex'); // -> true
cssSupports('display', 'invalid'); // -> false
cssSupports('text-decoration-line', 'underline'); // -> true
cssSupports('grid'); // -> true
cssSupports('invalid'); // -> false

curry

source test

函数柯里化。

参数名类型说明
fnfunction源函数
返回值function目标函数
var add = curry(function (a, b) { return a + b });
var add1 = add(1);
add1(2); // -> 3

dateFormat

source test

简单日期格式化。

参数名类型说明
date=new DateDate要格式化的日期对象
maskstring日期格式
utc=falseboolean是否是 UTC
gmt=falseboolean是否是 GMT
掩码说明
d月份天数,不补零
dd月份天数,不足两位补零
ddd星期几,简称
dddd星期几,全称
m月份,数字,不补零
mm月份,数字,不足两位补零
mmm月份,简称
mmmm月份,全称
yy年份,只显示后两位数字,不足两位补零
yyyy年份,显示四位数字
h小时,不补零 (12 小时制)
hh小时,不足两位补零(12 小时制)
H小时,不补零(24 小时制)
HH小时,不足两位补零(24 小时制)
M分钟,不补零
MM分钟,不足两位补零
s秒数,不补零
ss秒数,不足两位补零
l L毫秒,l 显示 3 位, L 显示 2 位
t小写显示上午下午,a 或 p
tt小写显示上午下午,am 或 pm
T大写显示上午下午,A 或 P
TT大写显示上午下午,AM 或 PM
Z美国时区缩写,比如 EST 或 MDT
oGMT/UTC 时区时差,比如 -0500 或 +0230
S月份天数序数后缀 (st,nd,rd,或 th)
UTC:是否是 UTC,必须写在最前面
dateFormat('isoDate'); // -> 2016-11-19
dateFormat('yyyy-mm-dd HH:MM:ss'); // -> 2016-11-19 19:00:04
dateFormat(new Date(), 'yyyy-mm-dd'); // -> 2016-11-19

debounce

source test

返回函数的防反跳版本。

参数名类型说明
fnfunction源函数
waitnumber延迟毫秒数
返回值function目标函数
const calLayout = debounce(function () {}, 300);
// $(window).resize(calLayout);

debug

source test demo

简单的 JavaScript 输出 debug 日志函数。

参数名类型说明
namestring名称
返回值function打印格式化日志的函数
var d = debug('test');
d('doing lots of uninteresting work');
d.enabled = false;

decodeUriComponent

source test

类似 decodeURIComponent 函数,只是输入不合法时不抛出错误并尽可能地对其进行解码。

参数名类型说明
strstring要解码的字符串
返回值string解码后的字符串
decodeUriComponent('%%25%'); // -> '%%%'
decodeUriComponent('%E0%A4%A'); // -> '\xE0\xA4%A'

defaults

source test

填充对象的默认值。

参数名类型说明
objobject目标对象
...srcobject提供默认值对象
返回值object目标对象
defaults({name: 'RedHood'}, {name: 'Unknown', age: 24}); // -> {name: 'RedHood', age: 24}

define

source test

定义一个模块,需要跟 use 模块配合使用。

参数名类型说明
namestring模块名
[requires]array依赖
methodfunction模块主体函数

模块主体函数只有被 use 模块使用时才会被执行。

define('A', function () {
    return 'A';
});
define('B', ['A'], function (A) {
    return 'B' + A;
});

defineProp

source test

Object.defineProperty(defineProperties) 的快捷方式。

参数名类型说明
objobject要定义的对象
propstring属性路径
descriptorobject属性描述
返回值object传入对象
参数名类型说明
objobject要定义的对象
propobject属性描述
返回值object传入对象
const obj = {b: {c: 3}, d: 4, e: 5};
defineProp(obj, 'a', {
    get: function () {
        return this.e * 2;
    }
});
// obj.a is equal to 10
defineProp(obj, 'b.c', {
    set: (function (val) {
        // this is pointed to obj.b
        this.e = val;
    }).bind(obj)
});
obj.b.c = 2;
// obj.a is equal to 4

const obj2 = {a: 1, b: 2, c: 3};
defineProp(obj2, {
    a: {
        get: function () {
            return this.c;
        }
    },
    b: {
        set: function (val) {
            this.c = val / 2;
        }
    }
});
// obj2.a is equal to 3
obj2.b = 4;
// obj2.a is equal to 2

delay

source test

在指定时长后执行函数。

参数名类型说明
fnfunction源函数
waitnumber延迟的毫秒数
[...args]*绑定参数
delay(function (text) {
    console.log(text);
}, 1000, 'later');
// -> Logs 'later' after one second

delegate

source test

事件委托。

add

添加事件委托。

参数名类型说明
elelement父元素
typestring事件类型
selectorstring匹配选择器
cbfunction事件回调

remove

移除事件委托。

var container = document.getElementById('container');
function clickHandler() {
    // Do something...
}
delegate.add(container, 'click', '.children', clickHandler);
delegate.remove(container, 'click', '.children', clickHandler);

detectBrowser

source test

使用 ua 检测浏览器信息。

参数名类型说明
ua=navigator.userAgentstring浏览器用户代理
返回值object包含名称和版本的对象

支持浏览器:ie,chrome,edge,firefox,opera,safari,ios(mobile safari),android(android browser)

var browser = detectBrowser();
if (browser.name === 'ie' && browser.version < 9) {
    // Do something about old IE...
}

detectMocha

source test

检测是否有 mocha 测试框架在运行。

detectMocha(); // -> True if mocha is running.

detectOs

source test

使用 ua 检测操作系统。

参数名类型说明
ua=navigator.userAgentstring浏览器用户代理
返回值string操作系统名称

支持操作系统: windows, os x, linux, ios, android, windows phone

if (detectOs() === 'ios') {
    // Do something about ios...
}

difference

source test

创建一个数组,该数组的元素不存在于给定的其它数组中。

参数名类型说明
arrarray源数组
[...rest]array要排除的元素
返回值array目标数组
difference([3, 2, 1], [4, 2]); // -> [3, 1]

dotCase

source test

将字符串转换为点式。

参数名类型说明
strstring源字符串
返回值string点式字符串
dotCase('fooBar'); // -> foo.bar
dotCase('foo bar'); // -> foo.bar

download

source test demo

在浏览器端触发文件下载。

参数名类型说明
dataBlob File string array下载的数据
namestring文件名
type=text/plainstring数据类型
download('test', 'test.txt');

each

source test benchmark

遍历集合中的所有元素,用每个元素当做参数调用迭代器。

参数名类型说明
objobject array目标集合
iteratorfunction迭代器
[ctx]*函数上下文
each({'a': 1, 'b': 2}, function (val, key) {});

easing

source test

缓动函数,参考 http://jqueryui.com/

参数名类型说明
percentnumber位于 0 到 1 之前的数字
返回值number计算结果
easing.linear(0.5); // -> 0.5
easing.inElastic(0.5, 500); // -> 0.03125

endWith

source test

检查字符串是否以指定字符串结尾。

参数名类型说明
strstring目标字符串
suffixstring字符串后缀
返回值boolean如果是后缀,返回真
endWith('ab', 'b'); // -> true

escape

source test

转义 HTML 字符串,替换 &,<,>,",`,和 ' 字符。

参数名类型说明
strstring源字符串
返回值string目标字符串
escape('You & Me'); // -> 'You &amp; Me'

escapeJsStr

source test

转义字符串为合法的 JavaScript 字符串字面量。

http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4

参数名类型说明
strstring源字符串
返回值string目标字符串
escapeJsStr('\"\n'); // -> '\\"\\\\n'

escapeRegExp

source test

转义特殊字符用于 RegExp 构造函数。

参数名类型说明
strstring源字符串
返回值string目标字符串
escapeRegExp('[licia]'); // -> '\\[licia\\]'

evalCss

source test

加载 css 到页面中。

参数名类型说明
cssstringcss 代码
evalCss('body{background:#08c}');

evalJs

source test benchmark

在指定的上下文执行 js 代码。

参数名类型说明
jsstringJavaScript 代码
ctx=globalobject上下文
evalJs('5+2'); // -> 7
evalJs('this.a', {a: 2}); // -> 2

every

source test

检查是否集合中的所有元素都能通过真值检测。

参数名类型说明
objectarray object目标集合
[iterator]function真值检测函数
[context]*函数上下文
返回值boolean如果都能通过,返回真
every([2, 4], function (val) {
    return val % 2 === 0;
}); // -> false

extend

source test

复制多个对象中的所有属性到目标对象上。

参数名类型说明
destinationobject目标对象
...sourcesobject源对象
返回值object目标对象
extend({name: 'RedHood'}, {age: 24}); // -> {name: 'RedHood', age: 24}

extendDeep

source test

类似 extend,但会递归进行扩展。

参数名类型说明
destinationobject目标对象
...sourcesobject源对象
返回值object目标对象
extendDeep({
    name: 'RedHood',
    family: {
        mother: 'Jane',
        father: 'Jack'
    }
}, {
    family: {
        brother: 'Bruce'
    }
});
// -> {name: 'RedHood', family: {mother: 'Jane', father: 'Jack', brother: 'Bruce'}}

extendOwn

source test

类似 extend,但只复制自己的属性,不包括原型链上的属性。

参数名类型说明
objobject目标对象
*srcobject源对象
返回值object目标对象
extendOwn({name: 'RedHood'}, {age: 24}); // -> {name: 'RedHood', age: 24}

extractBlockCmts

source test

从源码中提取块注释。

参数名类型说明
strstring源码
返回值array块注释
extractBlockCmts('\/*licia*\/'); // -> ['licia']

extractUrls

source test

从文本中提取 url。

参数名类型说明
strstring文本
返回值arrayurl 列表
var str = '[Official site: http://eustia.liriliri.io](http://eustia.liriliri.io)';
extractUrls(str); // -> ['http://eustia.liriliri.io']

fetch

source test

将 XMLHttpRequest 转换为 promise 的形式。

注意:这并不是 fetch 的 pollyfill。

参数名类型说明
urlstring请求地址
[options]object请求选项
返回值Promise请求 promise
fetch('test.json', {
    method: 'GET',
    timeout: 3000,
    headers: {},
    body: ''
}).then(function (res) {
    return res.json();
}).then(function (data) {
    console.log(data);
});

fibonacci

source test

计算斐波那契数列中某位数字。

参数名类型说明
nnumber序号 n
返回值number斐波那契数列 n 位的数字
fibonacci(1); // -> 1
fibonacci(3); // -> 2

fileSize

source test

将字节数转换为易于阅读的形式。

参数名类型说明
bytesnumber文件字节大小
返回值string易于阅读的文件大小
fileSize(5); // -> '5'
fileSize(1500); // -> '1.46K'
fileSize(1500000); // -> '1.43M'
fileSize(1500000000); // -> '1.4G'
fileSize(1500000000000); // -> '1.36T'

fill

source test

在数组指定位置填充指定值。

参数名类型说明
listarray源数组
value*填充数组的值
start=0number起始位置
end=arr.lengthnumber结束位置,不包括
返回值array目标数组
fill([1, 2, 3], '*'); // -> ['*', '*', '*']
fill([1, 2, 3], '*', 1, 2); // -> [1, '*', 3]

filter

source test

遍历集合中的每个元素,返回所有通过真值检测的元素组成的数组。

参数名类型说明
objarray要遍历的集合
predicatefunction真值检测函数
[ctx]*函数上下文
返回值array包含所有通过真值检测元素的数组
filter([1, 2, 3, 4, 5], function (val) {
    return val % 2 === 0;
}); // -> [2, 4]

find

source test

找到集合中第一个通过真值检测的元素。

参数名类型说明
objectarray object目标集合
iteratorfunction真值检测函数
[context]*函数上下文
返回值*第一个通过的元素
find([{
    name: 'john',
    age: 24
}, {
    name: 'jane',
    age: 23
}], function (val) {
    return val.age === 23;
}); // -> {name: 'jane', age: 23}

findIdx

source test

返回第一个通过真值检测元素在数组中的位置。

参数名类型说明
arrarray目标集合
predicatefunction真值检测函数
返回值number第一个符合条件元素的位置
findIdx([{
    name: 'john',
    age: 24
}, {
    name: 'jane',
    age: 23
}], function (val) {
    return val.age === 23;
}); // -> 1

findKey

source test

返回对象中第一个通过真值检测的属性键名。

参数名类型说明
objobject目标对象
predicatefunction真值检测函数
[ctx]*函数上下文
返回值string符合条件的键名
findKey({a: 1, b: 2}, function (val) {
    return val === 1;
}); // -> a

findLastIdx

source test

同 findIdx,只是查找顺序改为从后往前。

参数名类型说明
arrarray目标集合
predicatefunction真值检测函数
返回值number从后往前,第一个符合条件元素的位置
findLastIdx([{
    name: 'john',
    age: 24
}, {
    name: 'jane',
    age: 23
}, {
    name: 'kitty',
    age: 24
}], function (val) {
    return val.age === 24;
}); // -> 2

flatten

source test

递归拍平数组。

参数名类型说明
arrarray源数组
返回值array目标数组
flatten(['a', ['b', ['c']], 'd', ['e']]); // -> ['a', 'b', 'c', 'd', 'e']

fnParams

source test

获取函数的参数名列表。

参数名类型说明
fnfunction string目标函数
返回值array参数名
fnParams(function (a, b) {}); // -> ['a', 'b']

format

source test

使用类似于 printf 的方式来格式化字符串。

参数名类型说明
strstring源字符串
...values*替换占位符的值
返回值string目标字符串

格式占位符

占位符说明
%s字符串
%d, %i整数
%f浮点数
%o对象
format('%s_%s', 'foo', 'bar'); // -> 'foo bar'

fraction

source test

转换数字为分数形式。

参数名类型说明
numnumber数字
返回值string对应的分数
fraction(1.2); // -> '6/5'

freeze

source test

Object.freeze 的快捷方式。

如果不支持 Object.freeze,使用 Object.defineProperties 进行模拟。

参数名类型说明
objobject目标对象
返回值object目标对象
var a = {b: 1};
freeze(a);
a.b = 2;
console.log(a); // -> {b: 1}

freezeDeep

source test

递归进行 Object.freeze。

参数名类型说明
objobject目标对象
返回值object目标对象
var a = {b: {c: 1}};
freezeDeep(a);
a.b.c = 2;
console.log(a); // -> {b: {c: 1}}

fs

source test

node.js fs 模块的 promise 版本。

fs.readFile('test.js').then(function (data) {
    // Do something
}).catch(function (err) {
    // Handle errors
});

fullscreen

source test demo

全屏接口封装。

request

进入全屏。

参数名类型说明
[el]Element全屏元素

exit

退出全屏。

toggle

切换全屏。

参数名类型说明
[el]Element全屏元素

isActive

是否全屏。

getEl

获取全屏元素。

isEnabled

是否可以进入全屏。

fullscreen.request();
fullscreen.isActive(); // -> false, not a synchronous api
fullscreen.on('error', () => {});
fullscreen.on('change', () => {});

gcd

source test

使用欧几里德算法求最大公约数。

参数名类型说明
anumber要计算的数字
bnumber要计算的数字
返回值number最大公约数
gcd(121, 44); // -> 11

getPort

source test

获取有效的 TCP 端口。

参数名类型说明
[port]number array首选端口
返回值Promise有效端口

如果首选端口无法使用,将会返回一个有效的随机端口。

getPort([3000, 3001]).then(port => {
    console.log(port);
});

getUrlParam

source test

获取 url 参数值。

参数名类型说明
namestring参数名
url=locationstring目标 url
返回值string参数值
getUrlParam('test', 'http://example.com/?test=true'); // -> 'true'

has

source test

检查属性是否是对象自身的属性(原型链上的不算)。

参数名类型说明
objobject目标对象
keystring键名
返回值boolean如果是自身的属性,返回真
has({one: 1}, 'one'); // -> true

hotkey

source test demo

监听键盘触发对应的事件。

on

注册键盘按键监听器。

参数名类型说明
keystring按键
listenerfunction监听器

off

注销监听器。

hotkey.on('k', function () {
    console.log('k is pressed');
});
function keyDown() {}
hotkey.on('shift+a, shift+b', keyDown);
hotkey.off('shift+a', keyDown);

hslToRgb

source test

将 hsl 格式的颜色值转换为 rgb 格式。

参数名类型说明
hslarrayhsl 值
返回值arrayrgb 值
hslToRgb([165, 59, 50, 0.8]); // -> [52, 203, 165, 0.8]

identity

source test

返回传入的第一个参数。

参数名类型说明
val*任何值
返回值*第一个参数
identity('a'); // -> 'a'

idxOf

source test

返回指定值第一次在数组中出现的位置。

参数名类型说明
arrarray目标数组
val*要查找的值
fromIdx=0number查找起始位置
返回值number第一次出现的位置,如果没有,返回 -1
idxOf([1, 2, 1, 2], 2, 2); // -> 3

indent

source test

对文本的每一行进行缩进处理。

参数名类型说明
strstring源字符串
[char]string缩进字符
[len]number缩进长度
返回值string目标字符串
indent('foo\nbar', ' ', 4); // -> 'foo\n    bar'

inherits

source test

使构造函数继承另一个构造函数原型链上的方法。

参数名类型说明
Classfunction子类
SuperClassfunction父类
function People(name) {
    this._name = name;
}
People.prototype = {
    getName: function () {
        return this._name;
    }
};
function Student(name) {
    this._name = name;
}
inherits(Student, People);
var s = new Student('RedHood');
s.getName(); // -> 'RedHood'

insertionSort

source test

插入排序实现。

参数名类型说明
arrarray要排序的数组
[cmp]function比较器
返回值array有序数组
insertionSort([2, 1]); // -> [1, 2]

intersect

source test

计算所有数组的交集。

参数名类型说明
...arrarray源数组
返回值array交集
intersect([1, 2, 3, 4], [2, 1, 10], [2, 1]); // -> [1, 2]

intersectRange

source test

计算两个区间的交集。

参数名类型说明
aobject区间 a
bobject区间 b
返回值object如果存在区间交集,返回它
intersectRange({start: 0, end: 12}, {start: 11, end: 13});
// -> {start: 11, end: 12}
intersectRange({start: 0, end: 5}, {start: 6, end: 7});
// -> undefined

invert

source test

生成一个新对象,该对象的键名和键值进行调换。

参数名类型说明
objobject源对象
返回值object目标对象

如果对象存在重复的键值,后面的值会覆盖前面的值。

invert({a: 'b', c: 'd', e: 'f'}); // -> {b: 'a', d: 'c', f: 'e'}

isAbsoluteUrl

source test

检查 url 是否是绝对地址。

参数名类型说明
urlstring目标 url
返回值boolean如果是绝对地址,返回真
isAbsoluteUrl('http://www.surunzi.com'); // -> true
isAbsoluteUrl('//www.surunzi.com'); // -> false
isAbsoluteUrl('surunzi.com'); // -> false

isArgs

source test

检查值是否是参数类型。

参数名类型说明
val*要检查的值
返回值boolean如果是参数类型,返回真
(function () {
    isArgs(arguments); // -> true
})();

isArr

source test

检查值是否是数组类型。

参数名类型说明
val*要检查的值
返回值boolean如果是数组类型,返回真
isArr([]); // -> true
isArr({}); // -> false

isArrBuffer

source test

检查值是否是 ArrayBuffer 类型。

参数名类型说明
val*要检查的值
返回值boolean如果是 ArrayBuffer 类型,返回真
isArrBuffer(new ArrayBuffer(8)); // -> true

isArrLike

source test

检查值是否是类数组对象。

参数名类型说明
val*要检查的值
返回值boolean如果是类数组对象,返回真

对于函数,返回假。

isArrLike('test'); // -> true
isArrLike(document.body.children); // -> true;
isArrLike([1, 2, 3]); // -> true

isBlob

source test

检查值是否是 Blob 类型。

参数名类型说明
val*要检查的值
返回值boolean如果是 Blob 类型,返回真
isBlob(new Blob([])); // -> true;
isBlob([]); // -> false

isBool

source test

检查值是否是布尔类型。

参数名类型说明
val*要检查的值
返回值boolean如果是布尔类型,返回真
isBool(true); // -> true
isBool(false); // -> true
isBool(1); // -> false

isBrowser

source test

检测是否运行于浏览器环境。

console.log(isBrowser); // -> true if running in a browser

isBuffer

source test

检查值是否是 Buffer 类型。

参数名类型说明
val*要检查的值
返回值boolean如果是 Buffer 类型,返回真
isBuffer(new Buffer(4)); // -> true

isClose

source test

检查两个数字是否近似相等。

abs(a-b) <= max(relTol * max(abs(a), abs(b)), absTol)

参数名类型说明
anumber要比较的数字
bnumber要比较的数字
relTol=1e-9number相对误差
absTol=0number绝对误差
返回值boolean如果近似相等,返回真
isClose(1, 1.0000000001); // -> true
isClose(1, 2); // -> false
isClose(1, 1.2, 0.3); // -> true
isClose(1, 1.2, 0.1, 0.3); // -> true

isDataUrl

source test

检查字符串是否是有效的 Data Url。

参数名类型说明
strstring要检查的字符串
返回值boolean如果是有效的 Data Url,返回真
isDataUrl('http://eustia.liriliri.io'); // -> false
isDataUrl('data:text/plain;base64,SGVsbG8sIFdvcmxkIQ%3D%3D'); // -> true

isDate

source test

检查值是否是 Date 类型。

参数名类型说明
val*要检查的值
返回值boolean如果是 Date 类型,返回真
isDate(new Date()); // -> true

isEl

source test

检查值是否是 DOM 元素。

参数名类型说明
val*要检查的值
返回值boolean如果是 DOM 元素,返回真
isEl(document.body); // -> true

isEmail

source test

简单检查值是否是合法的邮件地址。

参数名类型说明
valstring要检查的值
返回值boolean如果是合法的邮件地址,返回真
isEmail('surunzi@foxmail.com'); // -> true

isEmpty

source test

检查值是否是空对象或空数组。

参数名类型说明
val*要检查的值
返回值boolean如果为空,返回真
isEmpty([]); // -> true
isEmpty({}); // -> true
isEmpty(''); // -> true

isEqual

source test

对两个对象进行深度比较,如果相等,返回真。

参数名类型说明
val*要比较的对象
other*要比较的对象
返回值boolean如果相等,返回真
isEqual([1, 2, 3], [1, 2, 3]); // -> true

isErr

source test

检查值是否是 Error 类型。

参数名类型说明
val*要检查的值
返回值boolean如果是 Error 类型,返回真
isErr(new Error()); // -> true

isEven

source test

检查数字是否是偶数。

参数名类型说明
numnumber要检查的数字
返回值boolean如果是偶数,返回真
isEven(0); // -> true
isEven(1); // -> false
isEven(2); // -> true

isFile

source test

检查值是否是 File 类型。

参数名类型说明
val*要检查的值
返回值boolean如果是 File 类型,返回真
isFile(new File(['test'], "test.txt", {type: "text/plain"})); // -> true

isFinite

source test

检查值是否是有限数字。

参数名类型说明
val*要检查的值
返回值boolean如果是有限数字,返回真
isFinite(3); // -> true
isFinite(Infinity); // -> false

isFn

source test

检查值是否是函数。

参数名类型说明
val*要检查的值
返回值boolean如果是函数,返回真

Generator 函数返回真。

isFn(function() {}); // -> true
isFn(function*() {}); // -> true

isGeneratorFn

source test

检查值是否是 Generator 函数。

参数名类型说明
val*要检查的值
返回值boolean如果是 Generator 函数,返回真
isGeneratorFn(function * () {}); // -> true;
isGeneratorFn(function () {}); // -> false;

isInt

source test

检查值是否是整数。

参数名类型说明
val*要检查的值
返回值boolean如果是整数,返回真
isInt(5); // -> true
isInt(5.1); // -> false
isInt({}); // -> false

isJson

source test

检查值是否是有效的 JSON。

该模块使用 JSON.parse()try... catch 进行检测。

参数名类型说明
valstringJSON 字符串
返回值boolean如果是有效的 JSON,返回真
isJson('{"a": 5}'); // -> true
isJson("{'a': 5}"); // -> false

isLeapYear

source test

检查年份是否是闰年。

参数名类型说明
yearnumber要检查的年份
返回值boolean如果是闰年,返回真
isLeapYear(2000); // -> true
isLeapYear(2002); // -> false

isMap

source test

检查值是否是 Map 对象。

参数名类型说明
val*要检查的值
返回值boolean如果是 Map 类型,返回真
isMap(new Map()); // -> true
isMap(new WeakMap()); // -> false

isMatch

source test

检查对象所有键名和键值是否在指定的对象中。

参数名类型说明
objobject目标对象
srcobject进行匹配的对象
返回值boolean如果匹配,返回真
isMatch({a: 1, b: 2}, {a: 1}); // -> true

isMiniProgram

source test

检测是否运行于微信小程序环境中。

console.log(isMiniProgram); // -> true if running in mini program.

isMobile

source test

使用 ua 检测是否运行于移动端浏览器。

参数名类型说明
ua=navigator.userAgentstring浏览器用户代理
返回值boolean如果是移动端浏览器,返回真
isMobile(navigator.userAgent);

isNaN

source test

检测值是否是 NaN。

参数名类型说明
val*要检查的值
返回值boolean如果是 NaN,返回真

跟全局 isNaN 不同的是,Undefined 不是 NaN。

isNaN(0); // -> false
isNaN(NaN); // -> true

isNative

source test

检查值是否是原生函数。

参数名类型说明
val*要检查的值
返回值boolean如果是原生函数,返回真
isNative(function () {}); // -> false
isNative(Math.min); // -> true

isNil

source test

检查值是否是 null 或 undefined,等价于 value == null。

参数名类型说明
val*要检查的值
返回值boolean如果是 null 或 undefined,返回真
isNil(null); // -> true
isNil(void 0); // -> true
isNil(undefined); // -> true
isNil(false); // -> false
isNil(0); // -> false
isNil([]); // -> false

isNode

source test

检测是否运行于 node 环境中。

console.log(isNode); // -> true if running in node

isNull

source test

检查值是否是 Null 类型。

参数名类型说明
val*要检查的值
返回值boolean如果是 Null 类型,返回真
isNull(null); // -> true

isNum

source test

检测值是否是数字类型。

参数名类型说明
val*要检查的值
返回值boolean如果是数字,返回真
isNum(5); // -> true
isNum(5.1); // -> true
isNum({}); // -> false

isNumeric

source test

检查值是否是数字,包括数字字符串。

参数名类型说明
val*要检查的值
返回值boolean如果是数字,返回真
isNumeric(1); // -> true
isNumeric('1'); // -> true
isNumeric(Number.MAX_VALUE); // -> true
isNumeric(0xFF); // -> true
isNumeric(''); // -> false
isNumeric('1.1.1'); // -> false
isNumeric(NaN); // -> false

isObj

source test

检查值是否是对象。

参数名类型说明
val*要检查的值
返回值boolean如果是对象,返回真

标准定义

isObj({}); // -> true
isObj([]); // -> true

isOdd

source test

检查数字是否是奇数。

参数名类型说明
numnumber要检查的数字
返回值boolean如果是奇数,返回真
isOdd(0); // -> false
isOdd(1); // -> true
isOdd(2); // -> false

isPlainObj

source test

检查值是否是用 Object 构造函数创建的对象。

参数名类型说明
val*要检查的值
返回值boolean如果是 plain object,返回真
isPlainObj({}); // -> true
isPlainObj([]); // -> false
isPlainObj(function () {}); // -> false

isPrime

source test

检查整数是否是质数。

参数名类型说明
numnumber要检查的数字
返回值boolean如果是质数,返回真
isPrime(11); // -> true
isPrime(8); // -> false

isPrimitive

source test

检测值是否是字符串,数字,布尔值或 null。

参数名类型说明
val*要检查的值
返回值boolean如果是原始类型,返回真
isPrimitive(5); // -> true
isPrimitive('abc'); // -> true
isPrimitive(false); // -> true

isPromise

source test

检查值是否是类 promise 对象。

参数名类型说明
val*要检查的值
返回值boolean如果是类 promise 对象,返回真
isPromise(new Promise(function () {})); // -> true
isPromise({}); // -> false

isRegExp

source test

检查值是否是正则类型。

参数名类型说明
val*要检查的值
返回值boolean如果是正则类型,返回真
isRegExp(/a/); // -> true

isRelative

source test

检查路径是否是相对路径。

参数名类型说明
pathstring要检查的路径
返回值boolean如果是相对路径,返回真
isRelative('README.md'); // -> true

isRetina

source test

判断是否运行在 retina 屏幕的设备上。

console.log(isRetina); // -> true if high DPR

isSet

source test

检查值是否是 Set 类型。

参数名类型说明
val*要检查的值
返回值boolean如果是 Set 类型,返回真
isSet(new Set()); // -> true
isSet(new WeakSet()); // -> false

isSorted

source test

检查数组是否有序。

参数名类型说明
arrarray目标数组
[cmp]function比较器
返回值boolean如果数组有序,返回真
isSorted([1, 2, 3]); // -> true
isSorted([3, 2, 1]); // -> false

isStr

source test

检查值是否是字符串。

参数名类型说明
val*要检查的值
返回值boolean如果是字符串,返回真
isStr('licia'); // -> true

isStream

source test

检查值是否是 Node.js Stream 类型。

参数名类型说明
val*要检查的值
返回值boolean如果是 Node.js Stream 类型,返回真
var stream = require('stream');

isStream(new stream.Stream()); // -> true

isTypedArr

source test

检查值是否 TypedArray 类型。

参数名类型说明
val*要检查的值
返回值boolean如果值是 TypedArray 类型,返回真
isTypedArr([]); // -> false
isTypedArr(new Uint8Array(8)); // -> true

isUndef

source test

检查值是否是 undefined。

参数名类型说明
val*要检查的值
返回值boolean如果是 undefined,返回真
isUndef(void 0); // -> true
isUndef(null); // -> false

isUrl

source test

简单检查值是否是有效的 url 地址。

参数名类型说明
valstring要检查的值
返回值boolean如果是有效的 url 地址,返回真
isUrl('http://www.example.com?foo=bar&param=test'); // -> true

isWeakMap

source test

检查值是否是 WeakMap 类型。

参数名类型说明
val*要检查的值
返回值boolean如果是 WeakMap 类型,返回真
isWeakMap(new Map()); // -> false
isWeakMap(new WeakMap()); // -> true

isWeakSet

source test

检查值是否是 WeakSet 类型。

参数名类型说明
val*要检查的值
返回值boolean如果是 WeakSet 类型,返回真
isWeakSet(new Set()); // -> false
isWeakSet(new WeakSet()); // -> true

isWindows

source test

检测是否运行在 windows 操作系统上。

console.log(isWindows); // -> true if running on windows

jsonp

source test

简单 jsonp 实现。

参数名类型说明
optsobjectjsonp 选项

可用选项:

参数名类型说明
urlstring请求地址
dataobject请求数据
successfunction成功回调
param=callbackstring回调参数名
[name]string回调函数名
errorfunction失败回调
completefunction结束回调
timeoutnumber请求超时
jsonp({
    url: 'http://example.com',
    data: {test: 'true'},
    success: function (data) {
        // ...
    }
});

kebabCase

source test

将字符串转换为短横线式。

参数名类型说明
strstring源字符串
返回值string短横线式字符串
kebabCase('fooBar'); // -> foo-bar
kebabCase('foo bar'); // -> foo-bar
kebabCase('foo_bar'); // -> foo-bar
kebabCase('foo.bar'); // -> foo-bar

keyCode

source test

键码键名转换。

获取键码对应的键名。

参数名类型说明
codenumber键码
返回值string对应的键名

获取键名对应的键码。

参数名类型说明
namestring键名
返回值number对应的键码
keyCode(13); // -> 'enter'
keyCode('enter'); // -> 13

keys

source test

返回包含对象自身可遍历所有键名的数组。

参数名类型说明
objobject目标对象
返回值array所有键名
keys({a: 1}); // -> ['a']

kill

source test

杀死进程。

参数名类型说明
pidnumber进程 ID
kill(9420);

last

source test

获取数组的最后一个元素。

参数名类型说明
arrarray目标数组
返回值*数组的最后一个元素
last([1, 2]); // -> 2

lazyRequire

source test

模块懒加载。

var r = lazyRequire(require);

var _ = r('underscore');

// underscore is required only when _ is called.
_().isNumber(5);

linkify

source test

将文本中的 url 地址转换为超链接。

参数名类型说明
strstring源字符串
[hyperlink]function转换超链接函数
返回值string目标字符串
var str = 'Official site: http://eustia.liriliri.io'
linkify(str); // -> 'Official site: <a href="http://eustia.liriliri.io">http://eustia.liriliri.io</a>'
linkify(str, function (url) {
    return '<a href="' + url + '" target="_blank">' + url + '</a>';
});

loadCss

source test

往页面插入样式链接。

参数名类型说明
srcstring样式文件地址
[cb]function加载完回调
loadCss('style.css', function (isLoaded) {
    // Do something...
});

loadImg

source test

加载指定地址的图片。

参数名类型说明
srcstring图片地址
[cb]function加载完回调
loadImg('http://eustia.liriliri.io/img.jpg', function (err, img) {
    console.log(img.width, img.height);
});

loadJs

source test

往页面插入脚本链接。

参数名类型说明
srcstring脚本地址
cbfunction加载完回调
loadJs('main.js', function (isLoaded) {
    // Do something...
});

longest

source test

获取数组中最长的一项。

参数名类型说明
arrarray目标数组
返回值*最长的一项
longest(['a', 'abcde', 'abc']); // -> 'abcde'

lowerCase

source test

转换字符串为小写。

参数名类型说明
strstring源字符串
返回值string目标字符串
lowerCase('TEST'); // -> 'test'

lpad

source test

对字符串进行左填充。

参数名类型说明
strstring源字符串
lennumber填充长度
[chars]string填充字符串
返回值string目标字符串
lpad('a', 5); // -> '    a'
lpad('a', 5, '-'); // -> '----a'
lpad('abc', 3, '-'); // -> 'abc'
lpad('abc', 5, 'ab'); // -> 'ababc'

ltrim

source test

删除字符串头部指定字符或空格。

参数名类型说明
strstring源字符串
charsstring array删除字符
返回值string目标字符串
ltrim(' abc  '); // -> 'abc  '
ltrim('_abc_', '_'); // -> 'abc_'
ltrim('_abc_', ['a', '_']); // -> 'bc_'

map

source test

对集合的每个元素调用转换函数生成与之对应的数组。

参数名类型说明
objectarray object源集合
iteratorfunction转换函数
[context]*函数上下文
返回值array目标集合
map([4, 8], function (n) { return n * n; }); // -> [16, 64]

mapObj

source test

类似 map,但针对对象,生成一个新对象。

参数名类型说明
objectobject源对象
iteratorfunction转换函数
[context]*函数上下文
返回值object目标对象
mapObj({a: 1, b: 2}, function (val, key) { return val + 1 }); // -> {a: 2, b: 3}

matcher

source test

传入对象返回函数,如果传入参数中包含该对象则返回真。

参数名类型说明
attrsobject要匹配的对象
返回值function真值检测函数
const objects = [
    {a: 1, b: 2, c: 3 },
    {a: 4, b: 5, c: 6 }
];
// filter(objects, matcher({a: 4, c: 6 }));

max

source test

获取数字中的最大值。

参数名类型说明
...numnumber要计算的数字
返回值number最大值
max(2.3, 1, 4.5, 2); // 4.5

md5

source test

MD5 算法实现。

参数名类型说明
msgstring密文
返回值stringMD5 摘要
md5('licia'); // -> 'e59f337d85e9a467f1783fab282a41d0'

memStorage

source test

Web Storage 接口的纯内存实现。

当 localStorage 或者 sessionStorage 无法使用时可以使用其作为替代。

var localStorage = window.localStorage || memStorage;
localStorage.setItem('test', 'licia');

memoize

source test

缓存函数计算结果。

参数名类型说明
fnfunction源函数
[hashFn]function计算缓存键名函数
返回值function目标函数
var fibonacci = memoize(function(n) {
    return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);
});

mergeSort

source test

归并排序实现。

注意:它不改变原数组。

参数名类型说明
arrarray要排序的数组
[cmp]function比较器
返回值array有序数组
mergeSort([2, 1]); // -> [1, 2]

meta

source test

meta 操作库,将 name 和 content 属性值转换为键值对。

获取指定 meta 值。如果忽略 meta 名,所有的 meta 键值对都被返回。

参数名类型说明
[name]string arraymeta 名
返回值stringmeta 值

设置 meta 值。

参数名类型说明
namestringmeta 名
contentstringmeta 值
参数名类型说明
metasobject包含所有 meta 键值对的对象

remove

移除指定 meta。

参数名类型说明
namestring arraymeta 名
// <meta name="a" content="1"/> <meta name="b" content="2"/> <meta name="c" content="3"/>
meta(); // -> {a: '1', b: '2', c: '3'}
meta('a'); // -> '1'
meta(['a', 'c']); // -> {a: '1', c: '3'}
meta('d', '4');
meta({
    d: '5',
    e: '6',
    f: '7'
});
meta.remove('d');
meta.remove(['e', 'f']);

methods

source test

获取对象中所有方法名。

参数名类型说明
objobject目标对象
返回值array方法名列表
methods(console); // -> ['Console', 'assert', 'dir', ...]

min

source test

获取数字中的最小值。

参数名类型说明
...numnumber要计算的数字
返回值number最小值
min(2.3, 1, 4.5, 2); // 1

mkdir

source test

递归地创建文件夹。

参数名类型说明
dirstring文件夹路径
mode=0777number文件夹模式
[callback]function回调
mkdir('/tmp/foo/bar/baz', function (err) {
    if (err) console.log(err);
    else console.log('Done');
});

moment

source test

简单的类 moment.js 实现。

它只支持一小部分的 moment.js api。

可用方法

format,isValid,isLeapYear,isSame,isBefore,isAfter,year, month,date,hour,minute,second,millisecond,unix,clone, toDate,toArray,toJSON,toISOString,toObject,toString,set, startOf,endOf,add,subtract,diff

不支持特性

时区以及 quarter 和 week 单位。

注意:格式化功能使用 dateFormat 模块,所以掩码格式并不完全与 moment.js 一致。

moment('20180501').format('yyyy-mm-dd'); // -> '2018-05-01'

ms

source test

时长字符串与毫秒转换库。

转换时长字符串为毫秒。

参数名类型说明
strstring字符串格式
返回值number毫秒

转换毫秒为时长字符串。

参数名类型说明
numnumber毫秒
返回值string字符串格式
ms('1s'); // -> 1000
ms('1m'); // -> 60000
ms('1.5h'); // -> 5400000
ms('1d'); // -> 86400000
ms('1y'); // -> 31557600000
ms('1000'); // -> 1000
ms(1500); // -> '1.5s'
ms(60000); // -> '1m'

negate

source test

创建一个将原函数结果取反的函数。

参数名类型说明
predicatefunction源函数
返回值function目标函数
function even(n) { return n % 2 === 0 }
// filter([1, 2, 3, 4, 5, 6], negate(even)); -> [1, 3, 5]

nextTick

source test

能够同时运行在 node 和浏览器端的 next tick 实现。

参数名类型说明
cbfunction调用函数

如果支持 process.nextTick,则调用它,否则使用 setImmediate 或 setTimeout 进行兼容。

nextTick(function () {
    // Do something...
});

noop

source test

一个什么也不做的空函数。

noop(); // Does nothing

normalizeHeader

source test

标准化 HTTP 头部名。

参数名类型说明
headerstring源头部名
返回值string目标头部名
normalizeHeader('content-type'); // -> 'Content-Type'
normalizeHeader('etag'); // -> 'ETag'

normalizePath

source test

标准化文件路径中的斜杠。

参数名类型说明
pathstring源路径
返回值string目标路径
normalizePath('\\foo\\bar\\'); // -> '/foo/bar/'
normalizePath('./foo//bar'); // -> './foo/bar'

now

source test

获取当前时间戳。

now(); // -> 1468826678701

objToStr

source test

Object.prototype.toString 的别名。

参数名类型说明
val*目标值
返回值string字符串表示
objToStr(5); // -> '[object Number]'

omit

source test

类似 pick,但结果相反。

参数名类型说明
objobject源对象
filterstring array function对象过滤器
返回值object目标对象
omit({a: 1, b: 2}, 'a'); // -> {b: 2}
omit({a: 1, b: 2, c: 3}, ['b', 'c']) // -> {a: 1}
omit({a: 1, b: 2, c: 3, d: 4}, function (val, key) {
    return val % 2;
}); // -> {b: 2, d: 4}

once

source test

创建只能调用一次的函数。

参数名类型说明
fnfunction源函数
返回值function目标函数
function init() {};
var initOnce = once(init);
initOnce();
initOnce(); // -> init is invoked once

open

source test

打开 url 地址或文件。

参数名类型说明
targetstring要打开的目标
返回值ChildProcess子进程对象
open('https://eustia.liriliri.io/');

openFile

source test demo

在浏览器中打开文件选择框。

参数名类型说明
optionsobject选项
返回值Promise文件列表

可用选项:

参数名类型说明
acceptstring文件类型
multiple=falseboolean是否支持多选
openFile({multiple: true}).then(fileList => {
    console.log(fileList)
});

optimizeCb

source test

用于高效的函数上下文绑定。

orientation

source test demo

屏幕方向工具库。

on

绑定 change 事件。

off

解绑 change 事件。

get

获取当前屏幕方向(横屏 landscape 或 竖屏 portrait)。

orientation.on('change', function (direction) {
    console.log(direction); // -> 'portrait'
});
orientation.get(); // -> 'landscape'

pad

source test

对字符串进行左右填充。

参数名类型说明
strstring源字符串
lennumber填充长度
charsstring填充字符串
返回值string目标字符串
pad('a', 5); // -> '  a  '
pad('a', 5, '-'); // -> '--a--'
pad('abc', 3, '-'); // -> 'abc'
pad('abc', 5, 'ab'); // -> 'babca'
pad('ab', 5, 'ab'); // -> 'ababa'

pairs

source test

将对象转换为包含【键名,键值】对的数组。

参数名类型说明
objobject目标对象
返回值array键值对数组
pairs({a: 1, b: 2}); // -> [['a', 1], ['b', 2]]

parallel

source test

同时执行多个函数。

参数名类型说明
tasksarray函数数组
[cb]function结束回调
parallel([
    function(cb) {
        setTimeout(function () { cb(null, 'one') }, 200);
    },
    function(cb) {
        setTimeout(function () { cb(null, 'two') }, 100);
    }
], function (err, results) {
    // results -> ['one', 'two']
});

parseArgs

source test

命令行参数简单解析。

参数名类型说明
argsarray参数数组
optsobject解析选项
返回值object解析结果

options

参数名类型说明
namesobject选项名及类型
shorthandsobject选项名缩写
parseArgs(['eustia', '--output', 'util.js', '-w'], {
    names: {
        output: 'string',
        watch: 'boolean'
    },
    shorthands: {
        output: 'o',
        watch: 'w'
    }
});
// -> {remain: ['eustia'], output: 'util.js', watch: true}

partial

source test

返回局部填充参数的函数,与 bind 模块相似。

参数名类型说明
fnfunction源函数
...partials*局部填充参数
返回值function目标函数
var sub5 = partial(function (a, b) { return b - a }, 5);
sub5(20); // -> 15

pascalCase

source test

将字符串转换为帕斯卡式。

参数名类型说明
strstring源字符串
返回值string帕斯卡式字符串
pascalCase('fooBar'); // -> FooBar
pascalCase('foo bar'); // -> FooBar
pascalCase('foo_bar'); // -> FooBar
pascalCase('foo.bar'); // -> FooBar

perfNow

source test

高精度时间戳。

var start = perfNow();

// Do something.

console.log(perfNow() - start);

pick

source test

过滤对象。

参数名类型说明
objectobject源对象
filterstring array function对象过滤器
返回值object目标对象
pick({a: 1, b: 2}, 'a'); // -> {a: 1}
pick({a: 1, b: 2, c: 3}, ['b', 'c']) // -> {b: 2, c: 3}
pick({a: 1, b: 2, c: 3, d: 4}, function (val, key) {
    return val % 2;
}); // -> {a: 1, c: 3}

pluck

source test

提取数组对象中指定属性值,返回一个数组。

参数名类型说明
objobject array目标集合
keystring array属性路径
返回值array指定属性值列表
var stooges = [
    {name: 'moe', age: 40},
    {name: 'larry', age: 50},
    {name: 'curly', age: 60}
];
pluck(stooges, 'name'); // -> ['moe', 'larry', 'curly']

precision

source test

获取数字的精度。

参数名类型说明
numnumber要检查的数字
返回值number精度
precision(1.234); // -> 3;

prefetch

source test demo

预获取指定的 url。

参数名类型说明
urlstring目标 url
返回值PromisePromise

如果支持,它将使用<link rel=prefetch>进行预加载。

prefetch('https://eustia.liriliri.io/');

prefix

source test

给 css 属性名增加浏览器前缀。

参数名类型说明
namestring源属性名
返回值string目标属性名

dash

同上,但返回短横线命名方式的版本。

prefix('text-emphasis'); // -> 'WebkitTextEmphasis'
prefix.dash('text-emphasis'); // -> '-webkit-text-emphasis'
prefix('color'); // -> 'color'

promisify

source test

转换使用回调的异步函数,使其返回 Promise。

参数名类型说明
fnfunction源函数
multiArgs=falseboolean回调是否有多个结果
返回值function目标函数

如果 multiArgs 设为真,返回的 Promise 会将回调的结果合并成一个数组。

var fs = require('fs');

var readFile = promisify(fs.readFile);
readFile('test.js', 'utf-8').then(function (data) {
    // Do something with file content.
});

property

source test

返回一个函数,该函数返回任何传入对象的指定属性。

参数名类型说明
pathstring array属性路径
返回值function目标函数
var obj = {a: {b: 1}};
property('a')(obj); // -> {b: 1}
property(['a', 'b'])(obj); // -> 1

query

source test

解析序列化 url 的 query 部分。

parse

将 query 字符串解析成对象。

参数名类型说明
strstringquery 字符串
返回值objectquery 对象

stringify

将对象序列化成 query 字符串。

参数名类型说明
objobjectquery 对象
返回值stringquery 字符串
query.parse('foo=bar&eruda=true'); // -> {foo: 'bar', eruda: 'true'}
query.stringify({foo: 'bar', eruda: 'true'}); // -> 'foo=bar&eruda=true'
query.parse('name=eruda&name=eustia'); // -> {name: ['eruda', 'eustia']}

quickSort

source test benchmark

快排实现。

参数名类型说明
arrarray要排序的数组
[cmp]function比较器
返回值array有序数组
quickSort([2, 1]); // -> [1, 2]

raf

source test

requestAnimationFrame 快捷方式。

如果原生 requestAnimationFrame 不支持,使用 setTimeout 进行兼容。

var id = raf(function tick() {
    // Animation stuff
    raf(tick);
});
raf.cancel(id);

random

source test

在给定区间内生成随机数。

参数名类型说明
minnumber最小值
maxnumber最大值
floating=falseboolean是否允许浮点数
返回值number随机数
random(1, 5); // -> an integer between 0 and 5
random(5); // -> an integer between 0 and 5
random(1.2, 5.2, true); /// -> a floating-point number between 1.2 and 5.2

randomBytes

source test

随机字节序列生成器。

如果支持,使用 node 的 crypto 模块或浏览器的 crypto 对象。

参数名类型说明
sizenumberNumber of bytes to generate
返回值objectRandom bytes of given length
randomBytes(5); // -> [55, 49, 153, 30, 122]

randomItem

source test

随机获取数组中的某项。

参数名类型说明
arrarray目标数组
返回值*随机项
randomItem([1, 2, 3]); // -> 2

range

source test

创建整数数组。

参数名类型说明
[start]number起始值
endnumber结束值
step=1number相邻差
返回值array整数数组
range(5); // -> [0, 1, 2, 3, 4]
range(0, 5, 2) // -> [0, 2, 4]

rc4

source test

RC4 对称加密算法实现。

encrypt

RC4 加密,结果表示为 base64 字符串。

decrypt

RC4 解密,传入 base64 字符串。

参数名类型说明
keystring密钥
strstring源字符串
返回值string目标字符串
rc4.encrypt('licia', 'Hello world'); // -> 'j9y2VpSfR3AdNN8='
rc4.decrypt('licia', 'j9y2VpSfR3AdNN8='); // -> 'Hello world'

ready

source test

dom 准备好时调用回调函数,类似于 jQuery 的 ready 方法。

参数名类型说明
fnfunction回调函数
ready(function () {
    // It's safe to manipulate dom here.
});

reduce

source test benchmark

合并多个值成一个值。

参数名类型说明
objobject array目标集合
iteratee=identityfunction合并函数
[initial]*初始值
[ctx]*函数上下文
返回值*合并值
reduce([1, 2, 3], function (sum, n) { return sum + n }, 0); // -> 6

reduceRight

source test

类似于 reduce,只是从后往前合并。

reduceRight([[1], [2], [3]], function (a, b) { return a.concat(b) }, []); // -> [3, 2, 1]

reject

source test

类似 filter,但结果相反。

参数名类型说明
objarray要遍历的集合
predicatefunction真值检测函数
[ctx]*函数上下文
返回值array包含所有未通过真值检测元素的数组
reject([1, 2, 3, 4, 5], function (val) {
    return val % 2 === 0;
}); // -> [1, 3, 5]

remove

source test

移除集合中所有通过真值检测的元素,返回包含所有删除元素的数组。

与 filter 不同,该模块会改变原数组。

参数名类型说明
listarray要遍历的集合
iteratorfunction真值检测函数
[context]*函数上下文
返回值array包含所有删除元素的数组
var arr = [1, 2, 3, 4, 5];
var evens = remove(arr, function (val) { return val % 2 === 0 });
console.log(arr); // -> [1, 3, 5]
console.log(evens); // -> [2, 4]

repeat

source test

重复字符串指定次数。

参数名类型说明
strstring源字符串
nnumber重复次数
返回值string目标字符串
repeat('a', 3); // -> 'aaa'
repeat('ab', 2); // -> 'abab'
repeat('*', 0); // -> ''

restArgs

source test

将给定序号后的参数合并成一个数组。

参数名类型说明
functionfunction源函数
[startIndex]number合并参数起始位置
返回值function目标函数
var paramArr = restArgs(function (rest) { return rest });
paramArr(1, 2, 3, 4); // -> [1, 2, 3, 4]

rgbToHsl

source test

将 rgb 格式的颜色值转换为 hsl 格式。

参数名类型说明
rgbarrayrgb 值
返回值arrayhsl 值
rgbToHsl([52, 203, 165, 0.8]); // -> [165, 59, 50, 0.8]

ric

source test

requestIdleCallback 的快捷方式。

如果原生 requestIdleCallback 不支持,使用 setTimeout 进行兼容。

const id = ric(function () {
    // Called during a browser's idle periods
});
ric.cancel(id);

rmCookie

source test

遍历所有可能的路径和域名将 cookie 删除。

参数名类型说明
keystringcookie 名
rmCookie('test');

rmdir

source test

递归地删除文件夹。

参数名类型说明
dirstring文件夹路径
callbackfunction回调
rmdir('/tmp/foo/bar/baz', function (err) {
    if (err) console.log (err);
    else console.log('Done');
});

root

source test

根对象引用,对于 nodeJs,取 global 对象,对于浏览器,取 window 对象。

rpad

source test

对字符串进行右填充。

参数名类型说明
strstring源字符串
lennumber填充长度
charsstring填充字符
返回值string目标字符串
rpad('a', 5); // -> 'a    '
rpad('a', 5, '-'); // -> 'a----'
rpad('abc', 3, '-'); // -> 'abc'
rpad('abc', 5, 'ab'); // -> 'abcab'

rtrim

source test

删除字符串尾部指定字符或空格。

参数名类型说明
strstring源字符串
[chars]string array删除字符
返回值string目标字符串
rtrim(' abc  '); // -> ' abc'
rtrim('_abc_', '_'); // -> '_abc'
rtrim('_abc_', ['c', '_']); // -> '_ab'

safeCb

source test

创建回调函数,内部模块使用。

safeDel

source test

删除对象属性。

参数名类型说明
objobject目标对象
patharray string属性路径
返回值*删除值或 undefined
var obj = {a: {aa: {aaa: 1}}};
safeDel(obj, 'a.aa.aaa'); // -> 1
safeDel(obj, ['a', 'aa']); // -> {}
safeDel(obj, 'a.b'); // -> undefined

safeGet

source test

获取对象属性值,路径不存在时不报错。

参数名类型说明
objobject目标对象
patharray string属性路径
返回值*属性值或 undefined
var obj = {a: {aa: {aaa: 1}}};
safeGet(obj, 'a.aa.aaa'); // -> 1
safeGet(obj, ['a', 'aa']); // -> {aaa: 1}
safeGet(obj, 'a.b'); // -> undefined

safeSet

source test

设置对象属性值。

如果路径的某一层不存在,将会创建一个空对象。

参数名类型说明
objobject目标对象
patharray string属性路径
val*要设置的值
var obj = {};
safeSet(obj, 'a.aa.aaa', 1); // obj = {a: {aa: {aaa: 1}}}
safeSet(obj, ['a', 'aa'], 2); // obj = {a: {aa: 2}}
safeSet(obj, 'a.b', 3); // obj = {a: {aa: 2, b: 3}}

safeStorage

source test

安全地使用 storage,使其在旧浏览器及 safari 无痕模式下能正常运行。

参数名类型说明
type='local'string模式,local 或 session
返回值object指定 storage
var localStorage = safeStorage('local');
localStorage.setItem('licia', 'util');

sample

source test

从集合中随机抽取部分样本。

参数名类型说明
objarray object目标集合
nnumber样本数量
返回值array样本
sample([2, 3, 1], 2); // -> [2, 3]
sample({a: 1, b: 2, c: 3}, 1); // -> [2]

scrollTo

source test demo

以动画的形式滚动到指定目标。

参数名类型说明
targetelement string number滚动目标
optionsobject滚动选项

选项

选项名类型默认值说明
tolerancenumber0偏移
durationnumber800时长
easingstring functionoutQuart缓动函数
callbackfunctionnoop结束回调
scrollTo('body', {
    tolerance: 0,
    duration: 800,
    easing: 'outQuart',
    callback: function () {}
});

selectionSort

source test

选择排序实现。

参数名类型说明
arrarray要排序的数组
[cmp]function比较器
返回值array有序数组
selectionSort([2, 1]); // -> [1, 2]

shuffle

source test

将数组中元素的顺序打乱。

参数名类型说明
arrarray源数组
返回值array目标数组
shuffle([1, 2, 3]); // -> [3, 1, 2]

size

source test

获取对象的大小或类数组元素的长度。

参数名类型说明
objarray object目标集合
返回值number集合大小
size({a: 1, b: 2}); // -> 2
size([1, 2, 3]); // -> 3

sleep

source test

使用 Promise 模拟暂停方法。

参数名类型说明
timeoutnumber暂时时长
;(async function () {
    await sleep(2000);
})();

slice

source test

截取数组的一部分生成新数组。

参数名类型说明
arrayarray目标数组
[start=0]number起始位置
[end=array.length]number结束位置,不包含
slice([1, 2, 3, 4], 1, 2); // -> [2]

snakeCase

source test

转换字符串为下划线式。

参数名类型说明
strstring源字符串
返回值string下划线式字符串
snakeCase('fooBar'); // -> foo_bar
snakeCase('foo bar'); // -> foo_bar
snakeCase('foo.bar'); // -> foo_bar

some

source test

检查集合中是否有元素通过真值检测。

参数名类型说明
objarray object目标集合
predicatefunction真值检测函数
ctx*函数上下文
返回值boolean如果有元素通过真值检测,返回真
some([2, 5], function (val) {
    return val % 2 === 0;
}); // -> true

sortBy

source test

遍历集合中的元素,将其作为参数调用函数,并以得到的结果为依据对数组进行排序。

参数名类型说明
arrobject array源集合
[iteratee=identity]function排序依据生成函数
[ctx]*函数上下文
返回值array排序后的数组
sortBy([1, 2, 3, 4, 5, 6], function (num) {
    return Math.sin(num);
}); // -> [5, 4, 6, 3, 1, 2]

spaceCase

source test

将字符串转换为空格式。

参数名类型说明
strstring源字符串
返回值string空格式字符串
spaceCase('fooBar'); // -> foo bar
spaceCase('foo.bar'); // -> foo bar
spaceCase('foo.bar'); // -> foo bar

splitCase

source test

将不同命名式的字符串拆分成数组。

参数名类型说明
strstring目标字符串
返回值array拆分成的数组
splitCase('foo-bar'); // -> ['foo', 'bar']
splitCase('foo bar'); // -> ['foo', 'bar']
splitCase('foo_bar'); // -> ['foo', 'bar']
splitCase('foo.bar'); // -> ['foo', 'bar']
splitCase('fooBar'); // -> ['foo', 'bar']
splitCase('foo-Bar'); // -> ['foo', 'bar']

splitPath

source test

将路径拆分为文件夹路径,文件名和扩展名。

参数名类型说明
pathstring目标路径
返回值object包含文件夹路径,文件名和扩展名的对象
splitPath('f:/foo/bar.txt'); // -> {dir: 'f:/foo/', name: 'bar.txt', ext: '.txt'}
splitPath('/home/foo/bar.txt'); // -> {dir: '/home/foo/', name: 'bar.txt', ext: '.txt'}

startWith

source test

检查字符串是否以指定字符串开头。

参数名类型说明
strstring目标字符串
prefixstring字符串前缀
返回值boolean如果是前缀,返回真
startWith('ab', 'a'); // -> true

strHash

source test

使用 djb2 算法进行字符串哈希。

参数名类型说明
strstring目标字符串
返回值number哈希结果
strHash('test'); // -> 2090770981

strToBytes

source test

将字符串转换为字节数组。

参数名类型说明
strstring目标字符串
返回值array字节数组
strToBytes('licia'); // -> [108, 105, 99, 105, 97]

stringify

source test

JSON 序列化,支持循环引用和函数。

undefined 被当作 null 处理。

参数名类型说明
objobject目标对象
spacesnumber缩进
返回值string序列化后的字符串
stringify({a: function () {}}); // -> '{"a":"[Function function () {}]"}'
var obj = {a: 1, b: {}};
obj.b = obj;
stringify(obj); // -> '{"a":1,"b":"[Circular ~]"}'

stripAnsi

source test

清除字符串中的 ansi 控制码。

参数名类型说明
strstring源字符串
返回值string目标字符串
stripAnsi('\u001b[4mcake\u001b[0m'); // -> 'cake'

stripCmt

source test

清除源码中的注释。

参数名类型说明
strstring源码
返回值string无注释代码
stripCmt('// comment \n var a = 5; /* comment2\n * comment3\n *\/'); // -> ' var a = 5; '

stripColor

source test

清除字符串中的 ansi 颜色控制码。

参数名类型说明
strstring源字符串
返回值string目标字符串
stripColor('\u001b[31mred\u001b[39m'); // -> 'red'

stripHtmlTag

source test

清除字符串中的 html 标签。

参数名类型说明
strstring源字符串
返回值string目标字符串
stripHtmlTag('<p>Hello</p>'); // -> 'Hello'

sum

source test

计算数字和。

参数名类型说明
...numnumber要计算的数字
返回值number数字和
sum(1, 2, 5); // -> 8

swap

source test

交换数组中的两项。

参数名类型说明
arrarray目标数组
anumber序号一
bnumber序号二
返回值array数组本身
var arr = [1, 2];
swap(arr, 0, 1); // -> [2, 1]

template

source test

将模板字符串编译成函数用于渲染。

参数名类型说明
strstring模板字符串
[util]object模板函数
返回值function编译后的模板函数
template('Hello <%= name %>!')({name: 'licia'}); // -> 'Hello licia!'
template('<p><%- name %></p>')({name: '<licia>'}); // -> '<p>&lt;licia&gt;</p>'
template('<%if (echo) {%>Hello licia!<%}%>')({echo: true}); // -> 'Hello licia!'
template('<p><%= util["upperCase"](name) %></p>', {
    upperCase: function (str) {
        return str.toLocaleUpperCase();
    }
})({ name: 'licia' }); // -> '<p>LICIA</p>'

throttle

source test

返回函数的节流阀版本。

参数名类型说明
fnfunction源函数
waitnumber延迟毫秒数
返回值function目标函数
const updatePos = throttle(function () {}, 100);
// $(window).scroll(updatePos);

through

source test

stream Transform 类的简单包装。

参数名类型说明
opts={}Object初始化流选项
transformfunctionTransform 实现
[flush]functionFlush 实现

obj

设置 objectMode 为真的快捷方式。

ctor

返回继承 Transform 的类。

const fs = require('fs');
fs.createReadStream('in.txt')
    .pipe(through(function (chunk, enc, cb) {
        // Do something to chunk
        this.push(chunk);
        cb();
    })).pipe(fs.createWriteStream('out.txt'));

timeAgo

source test

将时间格式化成多久之前的形式。

参数名类型说明
dateDate目标日期
[now=new Date]Date当时日期
返回值string格式化时间表示
var now = new Date().getTime();
timeAgo(now - 1000 * 6); // -> right now
timeAgo(now + 1000 * 15); // -> in 15 minutes
timeAgo(now - 1000 * 60 * 60 * 5, now); // -> 5 hours ago

timeTaken

source test

获取函数的执行时间。

参数名类型说明
fnfunction要计算执行时间的函数
返回值number执行时间,单位毫秒
timeTaken(function () {
    // Do something.
}); // -> Time taken to execute given function.

times

source test

调用目标函数 n 次。

参数名类型说明
nnumber调用次数
fnfunction目标函数
[ctx]*函数上下文
返回值array结果数组
times(3, String); // -> ['0', '1', '2', '3']

toArr

source test

将任意值转换为数组。

参数名类型说明
val*要转换的值
返回值array转换后的数组
toArr({a: 1, b: 2}); // -> [{a: 1, b: 2}]
toArr('abc'); // -> ['abc']
toArr(1); // -> [1]
toArr(null); // -> []

toBool

source test

将任意值转换为布尔值。

参数名类型说明
val*要转换的值
返回值boolean转换后的布尔值
toBool(true); // -> true
toBool(null); // -> false
toBool(1); // -> true
toBool(0); // -> false
toBool('0'); // -> false
toBool('1'); // -> true
toBool('false'); // -> false

toDate

source test

将任意值转换为日期类型。

参数名类型说明
val*要转换的值
返回值Date转换后的日期值
toDate('20180501');
toDate('2018-05-01');
toDate(1525107450849);

toEl

source test

将 html 字符串转换为 dom 元素。

必须只有一个根元素。

参数名类型说明
strstringhtml 字符串
返回值elementhtml 元素
toEl('<div>test</div>');

toInt

source test

将任意值转换为整数。

参数名类型说明
val*要转换的值
返回值number转换后的整数
toInt(1.1); // -> 1
toInt(undefined); // -> 0

toNum

source test

将任意值转换为数字。

参数名类型说明
val*要转换的值
返回值number转换后的数字
toNum('5'); // -> 5

toSrc

source test

将函数转换为源码。

参数名类型说明
fnfunction目标函数
返回值string源码
toSrc(Math.min); // -> 'function min() { [native code] }'
toSrc(function () {}) // -> 'function () { }'

toStr

source test

将任意值转换为字符串。

参数名类型说明
val*要转换的值
返回值string转换后的字符串
toStr(null); // -> ''
toStr(1); // -> '1'
toStr(false); // -> 'false'
toStr([1, 2, 3]); // -> '1,2,3'

topoSort

source test

拓扑排序实现。

参数名类型说明
edgesarray依赖关系
返回值array排序后的数组
topoSort([[1, 2], [1, 3], [3, 2]]); // -> [1, 3, 2]

trigger

source test

触发浏览器事件。

参数名类型说明
[el=document]element目标元素
typestring事件类型
optionsobject选项
trigger(document.getElementById('#test'), 'mouseup');
trigger('keydown', {keyCode: 65});

trim

source test

删除字符串两边指定字符或空格。

参数名类型说明
strstring源字符串
charsstring array删除字符
返回值string目标字符串
trim(' abc  '); // -> 'abc'
trim('_abc_', '_'); // -> 'abc'
trim('_abc_', ['a', 'c', '_']); // -> 'b'

tryIt

source test

在 try catch 块中运行函数。

参数名类型说明
fnfunction目标函数
[cb]function回调
tryIt(function () {
    // Do something that might cause an error.
}, function (err, result) {
    if (err) console.log(err);
});

type

source test

获取 JavaScript 对象的内部类型。

参数名类型说明
val*目标对象
返回值string对象类型,小写
type(5); // -> 'number'
type({}); // -> 'object'
type(function () {}); // -> 'function'
type([]); // -> 'array'

types

source test

仅用于生成 ts 定义文件。

ucs2

source test

UCS-2 编解码。

encode

通过码点序列创建字符串。

参数名类型说明
arrarray码点序列
返回值string编码后的字符串

decode

通过字符串创建码点序列。

参数名类型说明
strstring字符串
返回值array码点序列
ucs2.encode([0x61, 0x62, 0x63]); // -> 'abc'
ucs2.decode('abc'); // -> [0x61, 0x62, 0x63]
'𝌆'.length; // -> 2
ucs2.decode('𝌆').length; // -> 1

uncaught

source test demo

全局错误监听。

start

开始监听错误。

stop

停止监听错误。

addListener

添加监听器。

参数名类型说明
fnfunction错误监听器

rmListener

移除监听器。

rmAllListeners

移除所有监听器。

uncaught.start();
uncaught.addListener(err => {
    // Do something.
});

unescape

source test

和 escape 相反,转义 HTML 实体回去。

参数名类型说明
strstring源字符串
返回值string目标字符串
unescape('You &amp; Me'); // -> 'You & Me'

union

source test

返回传入所有数组的并集。

参数名类型说明
...arrarray要合并的数组
返回值array数组并集
union([2, 1], [4, 2], [1, 2]); // -> [2, 1, 4]

uniqId

source test

生成全局唯一 id。

参数名类型说明
[prefix]stringid 前缀
返回值string全局唯一 id
uniqId('eusita_'); // -> 'eustia_xxx'

unique

source test

返回数组去重后的副本。

参数名类型说明
arrarray源数组
[compare]function比较函数
返回值array目标数组
unique([1, 2, 3, 1]); // -> [1, 2, 3]

unzip

source test

与 zip 相反。

参数名类型说明
arrarray源数组
返回值array目标数组
unzip([['a', 1, true], ['b', 2, false]]); // -> [['a', 'b'], [1, 2], [true, false]]

upperCase

source test

转换字符串为大写。

参数名类型说明
strstring源字符串
返回值string目标字符串
upperCase('test'); // -> 'TEST'

upperFirst

source test

将字符串的第一个字符转换为大写。

参数名类型说明
strstring源字符串
返回值string目标字符串
upperFirst('red'); // -> Red

use

source test

使用 define 创建的模块。

参数名类型说明
[requires]array依赖
methodfunction要执行的代码
// define('A', () => 'A');
use(['A'], function (A) {
    console.log(A + 'B'); // -> 'AB'
});

utf8

source test

UTF-8 编解码。

encode

UTF-8 编码。

参数名类型说明
strstring源字符串
返回值string目标字符串

decode

UTF-8 解码。

参数名类型说明
strstring源字符串
safe=falseboolean如果设为真,不抛错误
返回值string目标字符串
utf8.encode('\uD800\uDC00'); // ->  '\xF0\x90\x80\x80'
utf8.decode('\xF0\x90\x80\x80'); // -> '\uD800\uDC00'

uuid

source test benchmark

生成符合 RFC4112 版本 4 协议的 uuid。

相关标准 RFC4122 4.4

uuid(); // -> '53ce0497-6554-49e9-8d79-347406d2a88b'

values

source test

返回对象所有的属性值。

参数名类型说明
objobject目标对象
返回值array所有属性值
values({one: 1, two: 2}); // -> [1, 2]

viewportScale

source test

获取窗口缩放比。

viewportScale(); // -> 3

vlq

source test

vlq 编解码。

encode

将数字编码为 vlq 字符串。

参数名类型说明
numbernumber array源数字
returnstring目标字符串

decode

将 vlq 字符串解码为数字。

参数名类型说明
stringstring源字符串
returnarray目标数字
vlq.encode(123); // -> '2H'
vlq.encode([123, 456, 789]); // -> '2HwcqxB'
vlq.decode('2H'); // -> [123]
vlq.decode('2HwcqxB'); // -> [123, 456, 789]

waitUntil

source test

等待直到条件函数返回真值。

参数名类型说明
conditionfunction条件函数
[timeout=0]number超时
[interval=250]number等待间隔
let a = 5;
setTimeout(() => a = 10, 500);
waitUntil(() => a === 10).then(() => {
    console.log(a); // -> 10
});

waterfall

source test

按顺序执行函数序列。

参数名类型说明
tasksarray函数序列
[cb]function结束回调
waterfall([
    function (cb) {
        cb(null, 'one');
    },
    function (arg1, cb) {
        // arg1 -> 'one'
        cb(null, 'done');
    }
], function (err, result) {
    // result -> 'done'
});

workerize

source test demo

将函数运行在 worker 线程中。

参数名类型说明
fnfunction源函数
返回值function目标函数
var worker = workerize(function (a, b) {
    return a + b;
});
worker(1, 2).then(function (value) {
    console.log(value); // -> 3
});

wrap

source test

将函数封装到包裹函数里面, 并把它作为第一个参数传给包裹函数。

参数名类型说明
fnfunction要包裹的函数
wrapperfunction包裹函数
返回值function目标函数
var p = wrap(escape, function(fn, text) {
    return '<p>' + fn(text) + '</p>';
});
p('You & Me'); // -> '<p>You &amp; Me</p>'

zip

source test

将每个数组中相应位置的值合并在一起。

参数名类型说明
...arrarray源数组
返回值array目标数组
zip(['a', 'b'], [1, 2], [true, false]); // -> [['a', 1, true], ['b', 2, false]]