Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

black-bible

一些常用的Javascript工具函数,可以简化我们日常的很多操作

Install

npm i black-bible -S

Usage

在Node环境下:

const _ = require('black-bible');

function f (a, b,c) {
    return a + b + c;
}

_.curry(f, 1)(2)(3); // 6

使用ES6模块:

import _ from 'black-bible';

function f (a, b,c) {
    return a + b + c;
}

_.curry(f, 1)(2)(3); // 6

使用script标签:

<script src="black-bible/umd"></script>
<script>

function f (a, b,c) {
    return a + b + c;
}

_.curry(f, 1)(2)(3); // 6
</script>

Modules

addNumber

求所有参数的和

对于参数列表中的任何类型,都会尝试相加,所以可能会有强制类型转换

afterfunction

函数在count次后执行

限制函数在触发多少次后执行

beforefunction

限制函数执行的次数

限制函数只能执行多少次,返回一个执行器函数,用来执行函数,次数到之后,再次执行函数 会失效,

camelCaseString

驼峰化字符串

函数会舍弃字符串的所有特殊字符,无论是在开头还是中间还是结尾,而在非开头处的数字或特殊字符 后的字母会大写

checkedTypeString

判断类型的函数

该函数通过Object.prototype.toString方法来判断,所以 若是重写了该方法,函数可能会失效,函数会返回对应类型的大写形式,

compactArray

获取真值数组

返回一个新数组,包含原数组的所有真值, 假值为:undefined, NaN, 0, false, null

curryfunction

函数柯里化的辅助函数

接受一个函数fn和可选的用于函数fn的参数,返回柯里化后的函数fn,即使函数fn的参数已经满足 同样会返回一个函数而不是fn调用的结果

debouncefunction

创建一个防抖函数

创建一个防抖函数,根据option选项对象来决定delay延时开始前或结束 后调用回调函数,其中option.before决定是否在延时开始之前触发回调,若是为false,那么 无论option.after为true还是false,都会在延时结束后触发回调,option.after决定是否 在延时结束之后触发回调,函数返回的防抖函数拥有一个cancel方法,用来取消延时调用

deepCloneany

深拷贝函数

一个深拷贝函数,cloneProto参数决定是否拷贝一个对象的原型,不会忽略函数,对象的 Symbol属性,但是对于Symbol属性,仍然传递的是Symbol的引用

delayObject

延时函数

延时函数fn的执行wait毫秒,会返回一个定时器ID

divideBoolean

求商

divideByNumber

求商

接受一个函数作为第二参数,对集合内每个元素调用,用来决定求值的标准

everyBoolean

every迭代函数

适用于多种类型的every函数,对于对象的每个元素调用函数,若所有属性都使 函数返回True则返回True,否则返回false

filterArray

适用于各种类型的Filter迭代函数

适用于各种类型的Filter迭代函数,对于集合的每一项调用函数,返回函数返回True的 项组成的数组

findany

find迭代函数

适用于多种类型的find方法,它返回第一个使断言函数返回true的项, 对于Object和Map类型,find返回的将不再是项,而是键值对中的键, fromIndex为迭代的起点,对于数组来说,是其索引,对于对象Map等类型来说, 是获取他们的所有键的数组的索引

findRightany

find函数的反向函数

从反方向开始迭代,返回第一个使函数返回True的项的值 对于对象或Map,返回的将是他们的键而不是值

forEachArray | Map | Set | String | Number | Object

forEach迭代函数

适用于各种类型的forEach,对集合的每一项运行函数,最终返回集合本身, 可以显式的通过返回false来终止循环

forEachRightArray | Object | Map | Set

forEachRight迭代函数

forEach函数的反向函数,从结尾开始迭代,可以通过返回false显式的 结束迭代,返回集合本身

isArray

是否是数组类型

使用Array的isArray方法来进行检查

isBigIntBoolean

值是否是BigInt类型

isBooleanBoolean

检查是否是布尔值

isDateBoolean

值是否是Date

isErrorBoolean

是否是Error类型

isFalseValueBoolean

检查是否是假植

在这里,假值的概念为值等于 undefined ,null ,false ,0

isFiniteBoolean

值是否是有限数字

isFunctionBoolean

值是否是函数

isInContainerBoolean

判断一个元素是否在对应容器的可视区域内

isMapBoolean

检查值是否为Map

isNaNBoolean

检查是否是NaN

与Javascript自带的isNaN不同,该函数只会对NaN值返回true

isNodeEnvBoolean

是否是Node环境

isNullBoolean

检查值是否等于Null

isNumberBoolean

检查是否是数字

isObjectBoolean

检查是否是对象类型

对于任何对象类型包括函数返回True,对于null返回false和undefined返回false

isObjectLikeBoolean

检查是否是类对象

跟isObject基本相同,只是会对函数返回false,也就是说对 一个非null非function对象返回True

isPlainObjectBoolean

检查值是否为普通对象

一个普通对象为直接通过Object构造函数或对象字面量创建的对象, 一个对象若是继承了其他对象也算是普通对象

isRegExpBoolean

是否是RegExp

isSetBoolean

是否是Set

isStringBoolean

检查是否是字符串

isSymbolBoolean

检查值是否是Symbol

isTrueValueBoolean

值是否是真值

在这里,真值的概念为不等于 undefined ,null ,0 ,false,

isUndefinedBoolean

检查值是否是Undefined

isWeakMapBoolean

检查值是否是WeakMap

isWeakSetBoolean

检查值是否是WeakSet

isWindowBoolean

检查当前宿主环境是否为window

mapArray

map迭代函数

适用于各种类型的map迭代函数,对集合的每一项调用函数fn,返回函数 的返回值组成的数组

maxNumber | String

集合的最大值

maxByany

最大值

接受一个函数作为第二参数,用来决定求值的标准

minNumber | String

求最小值

minByany

最小值

接受一个函数作为第二参数,用来决定求值的标准

multiplyNumber

求集合的乘积

multiplyByNumber

集合的乘积

接受一个函数作为第二参数,用来决定求值的标准

pullArray

移除数组元素

删除数组中所有与给定值相等的元素,给定值可以有多个,该方法会在原数组修改, 返回修改完成后的数组

randomNumber

随机数函数

返回min-max之间的随机数,包括min和max,默认返回整数

reduceany

reduce归并函数

适用于多种类型的归并函数,函数接受四个参数, 前一项的值,当前项的值,当前项的索引,对象本身,函数的返回值会作为第一个 参数自动传给下一项,也可以通过使函数返回false终止迭代

reduceRightany

rediceRight归并函数

reduce函数的反向函数,从反方向开始迭代,对每一项调用函数fn, 函数fn接受4个参数,前一项的值,当前项的值,当前项的索引,对象本身, 若accumulator存在,则从第一项开始迭代,否则,从第二项开始迭代 若fn函数显式的返回false,则终止迭代,返回结果

removeArray

删除数组元素

删除数组中所有对函数返回True的项,返回删除的项,在原数组删除 断言函数接受三个参数,数组当前项的值,索引和数组本身

sampleany

随机获取集合的某一项的值

随机获取集合的某一项,对于Object和Map类型来说,获取得将会是他们的 Key,而不是Value

sampleSizeArray

随机抽取一个集合的num个元素

随机抽取一个集合的num个元素,适用于多种类型,若是num大于集合内元素的数量,会随机抽取 集合所有的元素,会将抽取到的元素放到一个数组内,

shuffleArray | Object | Map | Set | String

打乱集合的顺序

打乱一个集合的顺序,不会改变原集合,而是返回一个新集合,

sizeNumber

一个集合内元素的数量

对于数组和字符串,为他们的length属性,其他类型的对象,为对象内所有 的可迭代属性的数量

someBoolean

some迭代函数

适用于多种类型的Some函数,对对象的每一项调用函数,若是有一项使函数返回True, 则返回True,否则返回false

subtractNumber

集合内所有元素的差

subtractByNumber

集合内元素的差

接受一个函数作为第二参数,对集合内每个元素调用,用来决定求值的标准

sumNumber

集合内所有值的和

sumByNumber

集合内元素的和

接受一个函数作为第二参数,用来决定求值的标准

swapIndexArray | String

交换元素位置

交换数组或字符串元素的位置,对于数组,在数组本身修改,对于字符串,会返回新的字符串

throttlefunction

节流函数

toCurrencyString

将一个数字转化为以逗号分隔的货币形式的字符串

toLowerany

将一个字符串或集合中的字符串转化为小写形式

会递归一个集合所有的深度,将它们的字符串值全部转化

toUpperString | Array | Object | Map

将字符串或一个集合中的字符串大写,

该方法会递归一个集合的所有深度,将集合的所有字符串转化为大写形式

uniqueArray

去重函数

数组去重,不改变原数组,返回去重后的新数组

upperFirstString | Array | Object | Map

将字符串或一个集合中的字符串首字母大写,

该方法会递归一个集合的所有深度,将集合的所有字符串转化为首字母大写形式

withOutArray

不改变原数组,返回一个去除给定值的新数组

返回一个新数组,其中包含所有不等于value的值

add ⇒ Number

求所有参数的和

对于参数列表中的任何类型,都会尝试相加,所以可能会有强制类型转换

Param Type Description
...args any 参数

Example

// 'abc'
console.log(_.add('a', 'b', 'c'))

// 6
console.log(_.add(1, 2, 3))

after ⇒ function

函数在count次后执行

限制函数在触发多少次后执行

Returns: function - 执行器函数

Param Type Default Description
fn function 想要限制执行的函数
count Number 次数
[point] any globalThis 函数执行时环境,默认为globalThis

Example

function after (n) {
    console.log('只有在点击四次后才会执行我');
}


let button = document.querySelector('button');

let exec = _.after(after, 4);

button.addEventListener('click', exec);

before ⇒ function

限制函数执行的次数

限制函数只能执行多少次,返回一个执行器函数,用来执行函数,次数到之后,再次执行函数 会失效,

Returns: function - 执行器函数

Param Type Default Description
fn function 想要限制执行次数的函数
count Number 执行次数
[point] any globalThis 函数运行时所在环境,默认为globalThis

Example

function before (n) {
    console.log('只有在前四次点击才会执行我');
}


let button = document.querySelector('button');

let exec = _.before(before, 4);

button.addEventListener('click', exec);

camelCase ⇒ String

驼峰化字符串

函数会舍弃字符串的所有特殊字符,无论是在开头还是中间还是结尾,而在非开头处的数字或特殊字符 后的字母会大写

Returns: String - 驼峰化后的字符串

Param Type Description
str String 想要驼峰化的字符串

Example

let str1 = '@!$as3gh-at^e123!@#';
let str2 = 'a1b2c3';

camelCase(str1); // as3GhAtE123
camelCase(str2); // a1B2C3

checkedType ⇒ String

判断类型的函数

该函数通过Object.prototype.toString方法来判断,所以 若是重写了该方法,函数可能会失效,函数会返回对应类型的大写形式,

Returns: String - 返回一个值对应的类型的字符串

Param Type Description
target any 一个需要检查类型的值

Example

_.checkedType({}); //  "Object"
 _.checkedType([]); // "Array"
 _.checkedType(true); // "Boolean"
 _.checkedType(undefined); // "Undefined"
 _.checkedType(null); // "Null"
 _.checkedType('str'); // "String"

compact ⇒ Array

获取真值数组

返回一个新数组,包含原数组的所有真值, 假值为:undefined, NaN, 0, false, null

Returns: Array - 数组中的真值元素组成的数组

Param Type Description
arr Array array

Example

let arr = [0, 1, false, 2, null, '', 3, NaN, 4, undefined, 5];

// [1, 2, 3, 4, 5];
console.log( _.compact(arr) );

curry ⇒ function

函数柯里化的辅助函数

接受一个函数fn和可选的用于函数fn的参数,返回柯里化后的函数fn,即使函数fn的参数已经满足 同样会返回一个函数而不是fn调用的结果

Returns: function - 柯里化后的函数

Param Type Description
fn function 想要柯里化的函数
...args any 函数fn所需要的参数

Example

function add (a, b, c, d) {
     console.log(a + b + c + d);
 }

let curried = _.curry(add, 1, 1, 1, 1);

curried();  // 4

let curried2 = _.curry(add);

curried2(1)(1)(1)(1);  // 4

curried2(1, 1)(1)(1);  // 4

curried2(1, 1, 1)(1);  // 4

debounce ⇒ function

创建一个防抖函数

创建一个防抖函数,根据option选项对象来决定delay延时开始前或结束 后调用回调函数,其中option.before决定是否在延时开始之前触发回调,若是为false,那么 无论option.after为true还是false,都会在延时结束后触发回调,option.after决定是否 在延时结束之后触发回调,函数返回的防抖函数拥有一个cancel方法,用来取消延时调用

Returns: function - debounced 防抖函数

Param Type Description
cb function 回调函数
delay 0 延时
option Object 选项对象
[option.before] Boolean 是否在延时开始之前触发回调
[option.after] Boolean 是否在延时结束之后触发回调

Example

function go () {
        console.log('scroll');
}

window.addEventListener( 'scroll', _.debounce(go, 1000) );

window.addEventListener( 'scroll', _.debounce(go, 1000, {before: true, after: true}) );

deepClone ⇒ any

深拷贝函数

一个深拷贝函数,cloneProto参数决定是否拷贝一个对象的原型,不会忽略函数,对象的 Symbol属性,但是对于Symbol属性,仍然传递的是Symbol的引用

Returns: any - 深拷贝后的对象

Param Type Description
target any 想要进行深拷贝的对象
cloneProto Boolean 是否拷贝对象的原型

Example

let obj = {
     name: 'Jack',
     age: 30
};

let o2 = _.deepClone(obj);

delay ⇒ Object

延时函数

延时函数fn的执行wait毫秒,会返回一个定时器ID

Returns: Object - 定时器ID

Param Type Default Description
fn function 想要延时的函数
wait Number 延时
args Array 函数fn需要的参数,需要放到一个数组里面
[point] any globalThis 函数fn执行时环境,默认为globalThis

Example

let obj = {
     name: 'Sun XiaoChuan',
     age: 6,
     introduction() {
     console.log(`My name is ${this.name} I'm ${this.age} years old`)
     }
}

// My name is sun Xiaochuan. I'm 6 years old
let timerId = delay(obj.introduction, 1000, [], obj);

divide ⇒ Boolean

求商

Param Type Description
collection Array | Object | Map | Set 集合

Example

// 2
console.log(_.divide([4, 2]));

divideBy ⇒ Number

求商

接受一个函数作为第二参数,对集合内每个元素调用,用来决定求值的标准

Param Type Description
collection Array | Object | Map | Set 集合
iterator function 迭代函数

Example

let arr = [
{age: 30},
{name: 'xxx'},
{age: 30}
];

let arrf = (o) => o.age;


// 1
console.log(_.divideBy(arr , arrf))

every ⇒ Boolean

every迭代函数

适用于多种类型的every函数,对于对象的每个元素调用函数,若所有属性都使 函数返回True则返回True,否则返回false

Returns: Boolean - 是否每个元素都对函数返回True

Param Type Description
target Array | Object | Map | Set object
predicate function 断言函数

Example

let arr = [1, 2, 3];

console.log( _.every(arr, item => item > 0) );  // true

filter ⇒ Array

适用于各种类型的Filter迭代函数

适用于各种类型的Filter迭代函数,对于集合的每一项调用函数,返回函数返回True的 项组成的数组

Returns: Array - 函数返回true的项组成的数组

Param Type Description
target Array | Map | Set | String | Number 对象
cb function 对对象的元素调用的函数

Example

_.filter([1, 2, 3, 4], item => item % 2 === 0);   // [2, 4]

_.filter('Jack', char => true);  // ['J', 'a', 'c', 'k']

_.filter(5, n => true);   // [0, 1, 2, 3, 4];

find ⇒ any

find迭代函数

适用于多种类型的find方法,它返回第一个使断言函数返回true的项, 对于Object和Map类型,find返回的将不再是项,而是键值对中的键, fromIndex为迭代的起点,对于数组来说,是其索引,对于对象Map等类型来说, 是获取他们的所有键的数组的索引

Returns: any - 第一个使断言函数返回true的项

Param Type Description
target Array | Map | Set | Object object
predicate function 断言函数,
fromIndex Number 迭代的起始索引

Example

let arr = [1, 2, 3, 4, 5, 6];

console.log( _.find(arr, item => item > 3) );  // 4

let obj = {a: 1, b: 2, c: 3};

console.log(  _.find(obj, item => item > 2) );  // c

findRight ⇒ any

find函数的反向函数

从反方向开始迭代,返回第一个使函数返回True的项的值 对于对象或Map,返回的将是他们的键而不是值

Returns: any - 第一个使断言函数返回true的项

Param Type Description
target Array | Object | Map | Set object
fn function 对象每一项调用的函数
fromIndex Number 迭代的起始索引

Example

let arr = [1, 2, 3, 4];

console.log( _.findRight(arr, item => item > 1) ); // 4

forEach ⇒ Array | Map | Set | String | Number | Object

forEach迭代函数

适用于各种类型的forEach,对集合的每一项运行函数,最终返回集合本身, 可以显式的通过返回false来终止循环

Returns: Array | Map | Set | String | Number | Object - 集合本身

Param Type Description
target Array | Map | Set | String | Number | Object 对象
cb function 对对象的元素调用的函数

Example

_.forEach([1, 2, 3], item => console.log(item)); 1, 2, 3

_.forEach({name: 'Jack', age: 30}, value => console.log(value)); // 'Jack', 30

forEachRight ⇒ Array | Object | Map | Set

forEachRight迭代函数

forEach函数的反向函数,从结尾开始迭代,可以通过返回false显式的 结束迭代,返回集合本身

Param Type Description
target Array | Object | Map | Set 想要迭代的集合
fn function 对每个元素调用的迭代函数

Example

let arr = [1, 2, 3, 4];

 _.forEachRight(arr, item => console.log(item));   // 4, 3, 2, 1

isArray

是否是数组类型

使用Array的isArray方法来进行检查

Param Type Description
value any 要检查的值

Example

// true
_.isArray([]);

isBigInt ⇒ Boolean

值是否是BigInt类型

Param Type Description
value * 需要检查的值

Example

let bigInt1 = 123n,
     bigInt2 = BigInt(456),
     bigInt3 = Object(789n);

// true
console.log( isBigInt(bigInt1) );
// true
console.log( isBigInt(bigInt2) );
// true
console.log( isBigInt(bigInt3) );

isBoolean ⇒ Boolean

检查是否是布尔值

Param Type Description
value * 需要检查的值

Example

// true
_.isBoolean(true)


// true
_.isBoolean(false)

isDate ⇒ Boolean

值是否是Date

Param Type Description
value * 想要检查的值

isError ⇒ Boolean

是否是Error类型

Param Type Description
value * 想要检查的值

Example

// true
console.log(_.isError(new Error()))

isFalseValue ⇒ Boolean

检查是否是假植

在这里,假值的概念为值等于 undefined ,null ,false ,0

Param Type Description
value * 想要检查的值

Example

// false
console.log( _.isFalseValue(0) );
console.log( _.isFalseValue(false) );
console.log( _.isFalseValue(null) );
console.log( _.isFalseValue(undefined) );

isFinite ⇒ Boolean

值是否是有限数字

Param Type Description
value * 需要检查的值

Example

// true
console.log( _.isFinite(100) );

// false
console.log( _.isFinite(1e10000) );

isFunction ⇒ Boolean

值是否是函数

Param Type Description
value * 想要检查的值

Example

// true
console.log(_.isFunction(function f(){}))

isInContainer ⇒ Boolean

判断一个元素是否在对应容器的可视区域内

Returns: Boolean - 是否在可视区域内

Param Type Description
el Object 判断是否在容器的目标DOM元素
container Object 容器DOM元素,默认为视口

isMap ⇒ Boolean

检查值是否为Map

Param Type Description
value * 需要检查的值

Example

// true
console.log(_.isMap(new Map()))

isNaN ⇒ Boolean

检查是否是NaN

与Javascript自带的isNaN不同,该函数只会对NaN值返回true

Param Type Description
value * 想要检查的值

Example

// true
_.isNaN(NaN);

// false
_.isNaN('AAA');

isNodeEnv ⇒ Boolean

是否是Node环境

isNull ⇒ Boolean

检查值是否等于Null

Param Type Description
value * 需要检查的值

Example

// true
console.log(_.isNull(null));

isNumber ⇒ Boolean

检查是否是数字

Param Type Description
value * 想要检查的值

Example

// true
_.isNumber(new Number(100));

// true
_.isNumber(100);

isObject ⇒ Boolean

检查是否是对象类型

对于任何对象类型包括函数返回True,对于null返回false和undefined返回false

Param Type Description
value any 想要检查的值

Example

// true
_.isObject([])

// false
_.isObject(null)

// false
_.isObject(undefined)

isObjectLike ⇒ Boolean

检查是否是类对象

跟isObject基本相同,只是会对函数返回false,也就是说对 一个非null非function对象返回True

Param Type Description
value * 想要检查的值

Example

// false
_.isObjectLike(function f () {})

isPlainObject ⇒ Boolean

检查值是否为普通对象

一个普通对象为直接通过Object构造函数或对象字面量创建的对象, 一个对象若是继承了其他对象也算是普通对象

Param Type Description
value * 需要检查的值

Example

let o1 = {},
     o2 = {};

Object.setPrototypeOf(o1, o2);


// true
console.log(_.isPlainObject(o1))


// true
console.log(_.isPlainObject(o2))

isRegExp ⇒ Boolean

是否是RegExp

Param Type Description
value * 检查的值

Example

// true
console.log(_.isRegExp(new RegExp()))

isSet ⇒ Boolean

是否是Set

Param Type Description
value * 需要检查的值

Example

// true
console.log(_.isSet(new Set()))

isString ⇒ Boolean

检查是否是字符串

Param Type Description
value * 想要检查的值

Example

// true
_.isString('aaa')

// true
_.isString(new String())

isSymbol ⇒ Boolean

检查值是否是Symbol

Param Type Description
value * 需要检查的值

Example

// true
console.log(_.isSymbol( Symbol("foo")))

// true
console.log(_.isSymbol(Object(Symbol("foo"))))

isTrueValue ⇒ Boolean

值是否是真值

在这里,真值的概念为不等于 undefined ,null ,0 ,false,

Param Type Description
value * 想要检查的值

Example

// false
console.log(_.isTrueValue(undefined));

// false
console.log(_.isTrueValue(0));

// false
console.log(_.isTrueValue(null));

// false
console.log(_.isTrueValue(false));

// true
console.log(_.isTrueValue('0'));

isUndefined ⇒ Boolean

检查值是否是Undefined

Param Type Description
value * 需要检查的值

Example

// true
console.log( _.isUndefined(Undefined) );

isWeakMap ⇒ Boolean

检查值是否是WeakMap

Param Type Description
value * 想要检查的值

Example

// true
console.log(_.isWeakMap(new WeakMap()))

isWeakSet ⇒ Boolean

检查值是否是WeakSet

Param Type Description
value * 想要检查的值

Example

// true
console.log(_.isWeakSet(new WeakSet()))

isWindow ⇒ Boolean

检查当前宿主环境是否为window

map ⇒ Array

map迭代函数

适用于各种类型的map迭代函数,对集合的每一项调用函数fn,返回函数 的返回值组成的数组

Returns: Array - 函数的返回值组成的数组

Param Type Description
target Array | Map | Set | String | Number obj
fn function 迭代函数

Example

_.map(5, item => item + '号'); // [ '0号', '1号', '2号', '3号', '4号' ]

_.map([1, 2, 3, 4, 5], (item, index) => index + '号'); // [ '0号', '1号', '2号', '3号', '4号' ]

max ⇒ Number | String

集合的最大值

Param Type Description
collection Array | Object | Map | Set 集合

Example

// 3
console.log(_.max([1, 2, 3]))

// c
console.log(_.max({'a', 'b', 'c'}))

maxBy ⇒ any

最大值

接受一个函数作为第二参数,用来决定求值的标准

Param Type Description
collection Array | Object | Map | Set 集合
iterator function 迭代函数

Example

let arr = [
{age: 30},
{name: 'xxx'},
{age: 20}
];

let arrf = (o) => o.age;


// {age: 30}
console.log(_.maxBy(arr, arrf));

min ⇒ Number | String

求最小值

Param Type Description
collection Array | Map | Set | Object 集合

Example

// 0
console.log(_.min([1, 2, 3, 0]))

minBy ⇒ any

最小值

接受一个函数作为第二参数,用来决定求值的标准

Param Type Description
collection Array | Object | Map | Set 集合
iterator function 迭代函数

Example

let arr = [
{age: 30},
{name: 'xxx'},
{age: 20}
];

let arrf = (o) => o.age;

// {age: 20}
console.log(_.minBy(arr, arrf));

multiply ⇒ Number

求集合的乘积

Param Type Description
collection Array | Object | Map | Set 集合

Example

// 24
console.log(_.multiply([2, 3, 4]))

multiplyBy ⇒ Number

集合的乘积

接受一个函数作为第二参数,用来决定求值的标准

Param Type Description
collection Array | Map | Set | Object 集合
iterator function 迭代函数

Example

let arr = [
{age: 30},
{name: 'xxx'},
{age: 20}
];
let arrf = (o) => o.age;

// 600
console.log(_.multiplyBy(arr, arrf))

pull ⇒ Array

移除数组元素

删除数组中所有与给定值相等的元素,给定值可以有多个,该方法会在原数组修改, 返回修改完成后的数组

Returns: Array - 修改完成的数组

Param Type Description
arr Array array
...args any 想要删除的元素

Example

let arr = [1, 2, 3, 4, 3, 2, 6, 1, 2];

_.pull(arr, 1, 2);  //  [3, 4, 3, 6]

random ⇒ Number

随机数函数

返回min-max之间的随机数,包括min和max,默认返回整数

Returns: Number - 一个数字

Param Type Description
min Number 最小值
max Number 最大值
floating Boolean 是否包括浮点数

Example

// 2, 5, 1, 1, 2
_.forEach(5, () => {
console.log( _.random(1, 5) );
});

reduce ⇒ any

reduce归并函数

适用于多种类型的归并函数,函数接受四个参数, 前一项的值,当前项的值,当前项的索引,对象本身,函数的返回值会作为第一个 参数自动传给下一项,也可以通过使函数返回false终止迭代

Returns: any - 函数fn最终的返回值

Param Type Description
target Array | String | Object | Map | Set obj
fn function 对目标每一项调用的函数
accumulator any 初始值

Example

let o = {a: 1, b: 2, c: 3};

// 6
let result = _reduce(o, (cur, pre) => {
     return pre + cur;
});

reduceRight ⇒ any

rediceRight归并函数

reduce函数的反向函数,从反方向开始迭代,对每一项调用函数fn, 函数fn接受4个参数,前一项的值,当前项的值,当前项的索引,对象本身, 若accumulator存在,则从第一项开始迭代,否则,从第二项开始迭代 若fn函数显式的返回false,则终止迭代,返回结果

Returns: any - 构建的最终值

Param Type Description
target Array | Object | Map | Set object
fn function 对对象每个元素调用的函数
accumulator any 初始值

Example

let arr = [0, 1, 2, 3, 4];

console.log( _.reduceRight(arr, (pre, cur) => pre + cur) );  // 10

remove ⇒ Array

删除数组元素

删除数组中所有对函数返回True的项,返回删除的项,在原数组删除 断言函数接受三个参数,数组当前项的值,索引和数组本身

Returns: Array - 函数返回true的项组成的数组

Param Type Description
arr Array array
fn function 断言函数,

Example

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

_.remove(arr);    //  [ 2, 4, 6, 8, 10 ]

console.log(arr);  //  [ 1, 3, 5, 7, 9 ]

sample ⇒ any

随机获取集合的某一项的值

随机获取集合的某一项,对于Object和Map类型来说,获取得将会是他们的 Key,而不是Value

Returns: any - 集合的某一项

Param Type Description
target Array | Object | Map | Set | String 一个集合

Example

let arr = [1, 2, 3, 4];

// 3, 2, 2, 3, 3, 1, 2, 4, 4, 1

_.forEach(10, () => {
     console.log( _.sample(arr) )
})

sampleSize ⇒ Array

随机抽取一个集合的num个元素

随机抽取一个集合的num个元素,适用于多种类型,若是num大于集合内元素的数量,会随机抽取 集合所有的元素,会将抽取到的元素放到一个数组内,

Returns: Array - 抽取的元素组成的数组

Param Type Description
target Array | Map | Set | Object | String 想要随机抽取的对象
num Number 想要获得的元素数量

Example

let arr = [1, 2, 3, 4];

// [3, 1]
console.log(_.sampleSize(arr, 2));

// [2, 4, 3, 1]
console.log(_.sampleSize(arr, 100));

shuffle ⇒ Array | Object | Map | Set | String

打乱集合的顺序

打乱一个集合的顺序,不会改变原集合,而是返回一个新集合,

Returns: Array | Object | Map | Set | String - 打乱顺序后的集合

Param Type Description
target Array | Object | Map | Set | String 想要打乱顺序的集合

Example

let arr = [1, 2, 3, 4];

// [2, 4, 3, 1]
console.log(_.shuffle(arr));

let str = 'ABCD';

// 'ADBC';
console.log(_.shuffle(str));

size ⇒ Number

一个集合内元素的数量

对于数组和字符串,为他们的length属性,其他类型的对象,为对象内所有 的可迭代属性的数量

Returns: Number - 集合内元素的数量

Param Type Description
target Array | String | Object | Map | Set 一个集合

Example

let o = {name: 'Davi', age: 22};

// 2
console.log(_.size(o));

some ⇒ Boolean

some迭代函数

适用于多种类型的Some函数,对对象的每一项调用函数,若是有一项使函数返回True, 则返回True,否则返回false

Param Type Description
target Array | Object | Map | Set 对象
predicate function 断言函数

Example

let arr = [1, 2, 3, 4];

console.log( _.some(arr, item => item > 3) );  // true

subtract ⇒ Number

集合内所有元素的差

Param Type Description
collection Array | Object | Map | Set 集合

Example

// 0
console.log(_.subtract([3, 2, 1]))

subtractBy ⇒ Number

集合内元素的差

接受一个函数作为第二参数,对集合内每个元素调用,用来决定求值的标准

Param Type Description
collection Array | Object | Map | Set 集合
iterator function 迭代函数

Example

let obj = {
name: [1, 2, 3],
age: [4, 5, 6],
color: [7, 8, 9]
};

let objf = (o) => o[0];

// -10
console.log(_.subtractBy(obj, objf));



let arr = [
{age: 30},
{name: 'xxx'},
{age: 20}
];

let arrf = (o) => o.age;


// 10
console.log(_.subtractBy(arr, arrf));

sum ⇒ Number

集合内所有值的和

Param Type Description
collection Array | Object | Map | Set 集合

Example

// 6
console.log(_.sum([1, 2, 3]))

sumBy ⇒ Number

集合内元素的和

接受一个函数作为第二参数,用来决定求值的标准

Param Type Description
collection Array | Object | Map | Set 一个集合
iterator function 用来迭代的函数

Example

let arr = [
{age: 30},
{name: 'xxx'},
{age: 20}
];

let arrf = (o) => o.age;

// 50
console.log(_.sumBy(arr, arrf))

swapIndex ⇒ Array | String

交换元素位置

交换数组或字符串元素的位置,对于数组,在数组本身修改,对于字符串,会返回新的字符串

Param Type Description
target Array | String 数组或字符串
i Number 索引
j Number 索引

Example

_.swapIndex([1, 2], 0, 1); // [2, 1]

_.swapIndex('abcd', 0, 3); // dbca

throttle ⇒ function

节流函数

Returns: function - 节流后的函数

Param Type Description
fn function 事件处理函数
time Numer 延时

Example

function go () {
        console.log('scroll');
}

window.addEventListener( 'scroll', _.throttle(go, 1000) );

toCurrency ⇒ String

将一个数字转化为以逗号分隔的货币形式的字符串

Returns: String - 货币形式的字符串

Param Type Description
num Number 一个数字

Example

//  123,456,789.123456
console.log( toCurrency(123456789.123456) );

toLower ⇒ any

将一个字符串或集合中的字符串转化为小写形式

会递归一个集合所有的深度,将它们的字符串值全部转化

Param Type Description
target String | Object | Map | Array 想要小写的字符串或集合

Example

let arr = ['AAA', ['BBB', ['CCC']]];

//  ['aaa', ['bbb', ['ccc']]];
console.log(_.toLower(arr));

toUpper ⇒ String | Array | Object | Map

将字符串或一个集合中的字符串大写,

该方法会递归一个集合的所有深度,将集合的所有字符串转化为大写形式

Returns: String | Array | Object | Map - 转化完成的字符串或集合

Param Type Description
target String | Array | Object | Map 想要大写的字符串或集合

Example

let arr = ['aaa', {name: 'davi'}, 20];

// ['AAA', {name: 'DAVI'}, 20]
console.log(_.toUpper(['aaa', { name: 'davi' }, 20]));

unique ⇒ Array

去重函数

数组去重,不改变原数组,返回去重后的新数组

Returns: Array - 去重后的数组

Param Type Description
arr Array array

Example

let arr = [1, 2, 3, 4, 1, 2, 3, 5];

_.unique(arr);  // [1, 2, 3, 4, 5]

upperFirst ⇒ String | Array | Object | Map

将字符串或一个集合中的字符串首字母大写,

该方法会递归一个集合的所有深度,将集合的所有字符串转化为首字母大写形式

Returns: String | Array | Object | Map - 转化完成的字符串或集合

Param Type Description
target String | Array | Object | Map 想要首字母大写的字符串或集合

Example

let arr = ['aaa', {name: 'davi'}, 20];

// ['Aaa', {name: 'Davi'}, 20];
console.log(_.upperFirst(arr));

withOut ⇒ Array

不改变原数组,返回一个去除给定值的新数组

返回一个新数组,其中包含所有不等于value的值

Param Type Description
arr Array array
...values any 想要移除的值

Example

let arr = [1, 1, 0, 2, 3 ,4 ,5 ,3, 6];

// [0, 2, 4, 5, 6]
console.log( _.withOut(arr, 1, 3) );

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages