loadsh是一个非常实用的工具库,小菜在见到这个工具库就被深深的吸引了。有了这个工具库大部分的处理就不需要自己写工具了,想想就美滋滋。官方的网站https://www.lodashjs.com/,这个是有中文翻译的http://lodash.think2011.net/chunk,小菜这篇博客只是针对自己能够快速查阅所做的一个记录。

1.Array(数组)

适用于数组类型,比如填充数据、查找元素、数组分片等操作

_.chunk(array, [size=0])

将数组拆分成多个 size 长度的块,并组成一个新数组。 如果数组无法被分割成全部等长的块,那么最后剩余的元素将组成一个块。

_.compact(array)

创建一个移除了所有假值的数组。例如:false、null、 0、”“、undefined, 以及NaN 都是 “假值”.

_.concat(array, [values])

创建一个用任何数组 或 值连接的新数组

_.difference(array, [values])

创建一个差异化后的数组,不包括使用 SameValueZero 方法提供的数组。

.differenceBy(array, [values], [iteratee=.identity])

这个方法类似 _.difference,除了它接受一个 iteratee 调用每一个数组和值。iteratee 会传入一个参数:(value)

_.differenceWith(array, [values], [comparator])

这个方法类似 _.difference,除了它接受一个 comparator 调用每一个数组元素的值。 comparator 会传入2个参数:(arrVal, othVal)。

_.drop(array, [n=1])

裁剪数组中的前 N 个数组,返回剩余的部分。

_.dropRight(array, [n=1])

从右边开始裁剪数组中的 N 个数组,返回剩余的部分。

.dropRighWhile(array, [predicate=.identity])

从右边开始裁剪数组,起点从 predicate 返回假值开始。predicate 会传入3个参数:(value, index, array)。

.dropWhile(array, [predicate=.identity])

裁剪数组,起点从 predicate 返回假值开始。predicate 会传入3个参数:(value, index, array)。

_.fill(array, value, [start=0], [end=array.length])

指定 值 填充数组,从 start 到 end 的位置,但不包括 end 本身的位置。

findIndex(array, [predicate=.identity])

这个方法类似 _.find。除了它返回最先通过 predicate 判断为真值的元素的 index ,而不是元素本身。

_.findLastIndex

这个方式类似 _.findIndex , 不过它是从右到左的

_.first->head

获取数组第一个元素

_.flatten

向上一级展平数组嵌套

_.flattenDeep

递归展平 数组.

_.flattenDepth

根据 depth 递归展平 数组 的层级

_.fromPairs

反向版 _.toPairs,这个方法返回一个由键值对构成的对象

_.head

获得数组的首个元素

_.indexOf

根据 value 使用 SameValueZero 等值比较返回数组中首次匹配的 index, 如果 fromIndex 为负值,将从数组尾端索引进行匹配,如果将 fromIndex 设置为 true,将使用更快的二进制检索机制。

_.initial

获取数组中除了最后一个元素之外的所有元素

_.intersection

创建一个包含所有使用 SameValueZero 进行等值比较后筛选的唯一值数组。

_.intersectionBy

这个方法类似 _.intersection,除了它接受一个 iteratee 调用每一个数组和值。iteratee 会传入一个参数:(value)

_.intersectionWith

这个方法类似 _.intersection,除了它接受一个 comparator 调用每一个数组和值。iteratee 会传入2个参数:((arrVal, othVal)

_.join

将数组中的所有元素转换为由 separator 分隔的字符串。

_.last

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

_.lastIndexOf

这个方法类似 _.indexOf,除了它是从右到左遍历元素的。 这个方法类似 _.indexOf except that it iterates over elements of array from right to left.

_.nth

获取数组索引n处的元素。如果n为负数,则返回结尾的第n个元素。

_.pull

移除所有经过 SameValueZero 等值比较为 true 的元素

_.pullAll

这个方式类似 _.pull,除了它接受数组形式的一系列值。

_.pullAllBy

这个方法类似 _.pullAll,除了它接受一个 comparator 调用每一个数组元素的值。 comparator 会传入一个参数:(value)。

_.pullAllWith

此方法类似于_.pullAll,除了它接受比较器,该比较器被调用以将数组元素与值进行比较。使用两个参数调用比较器:(arrVal,othVal)。

_.pullAt

根据给的 indexes 移除对应的数组元素并返回被移除的元素。

_.remove

移除经过 predicate 处理为真值的元素,并返回被移除的元素。predicate 会传入3个参数:(value, index, array)

_.reverse

数组反转

_.slice

创建一个裁剪后的数组,从 start 到 end 的位置,但不包括 end 本身的位置。

_.sortedIndex

使用二进制的方式检索来决定 value 应该插入在数组中位置。它的 index 应该尽可能的小以保证数组的排序。

_.sortedIndexBy

这个方法类似 _.sortedIndex,除了它接受一个 iteratee 调用每一个数组和值来计算排序。iteratee 会传入一个参数:(value)。

_.sortedIndexOf

这个方法类似 _.indexOf,除了它是执行二进制来检索已经排序的数组的。

_.sortedLastIndex

这个方法类似 _.sortedIndex,除了它返回在 value 中尽可能大的 index 位置。

_.sortedLastIndexBy

这个方法类似 _.sortedLastIndex,除了它接受一个 iteratee 调用每一个数组和值来计算排序。iteratee 会传入一个参数:(value)。

_.sortedLastIndexOf

这个方法类似 _.lastIndexOf,除了它是执行二进制来检索已经排序的数组的。

_.sortedUniq

这个方法类似 _.uniq,除了它会排序并优化数组。

_.sortedUniqBy(array, [iteratee])

这个方法类似 _.uniqBy,除了它接受一个 iteratee 调用每一个数组和值来排序并优化数组。

_.tail(array)

获取数组中除了第一个元素的剩余数组

_.take(array, [n=1])

从数组的起始元素开始提取 N 个元素。

_.takeRight(array, [n=1])

从数组的结束元素开始提取 N 个数组

_.takeRightWhile

从数组的最右边开始提取数组,直到 predicate 返回假值。predicate 会传入三个参数:(value, index, array)。

_.takeWhille

从数组的开始提取数组,直到 predicate 返回假值。predicate 会传入三个参数:(value, index, array)。

_.union

创建顺序排列的唯一值组成的数组。所有值经过 SameValueZero 等值比较。

_.unionBy

这个方法类似 _.union,除了它接受一个 iteratee 调用每一个数组和值。iteratee 会传入一个参数:(value)

_.unionWith

这个方法类似 _.union, 除了它接受一个 comparator 调用每一个数组元素的值。 comparator 会传入2个参数:(arrVal, othVal)。

_.uniq

创建一个不重复的数组副本。使用了 SameValueZero 等值比较。只有首次出现的元素才会被保留。

_.uniqBy

这个方法类似 _.uniq,除了它接受一个 iteratee 调用每一个数组和值来计算唯一性。iteratee 会传入一个参数:(value)。

_.uniqWith

这个方法类似 _.uniq,除了它接受一个 comparator 来比较计算唯一性。 comparator 会传入2个参数:(arrVal, othVal)

_.unzip

这个方法类似 _.zip,除了它接收一个打包后的数组并且还原为打包前的状态。

_.unzioWith

这个方法类似 _.unzip,除了它接受一个 iteratee 来决定如何重组解包后的数组。iteratee 会传入4个参数:(accumulator, value, index, group)。每组的第一个元素作为初始化的值

_.without

创建一个移除了所有提供的 values 的数组。使用了 SameValueZero 等值比较。

_.xor

创建一个包含了所有唯一值的数组。使用了 symmetric difference 等值比较。

_.xorBy

这个方法类似 _.xor,除了它接受一个 iteratee 调用每一个数组和值。iteratee 会传入一个参数:(value)。

_.xorWith

这个方法类似 _.xor,除了它接受一个 comparator 调用每一个数组元素的值。 comparator 会传入2个参数:(arrVal, othVal)。

_.zip

创建一个打包所有元素后的数组。第一个元素包含所有提供数组的第一个元素,第二个包含所有提供数组的第二个元素,以此类推。

_.zipObject

这个方法类似 _.fromPairs,除了它接受2个数组,一个作为属性名,一个作为属性值。

_.zipObjectDeep

这个方法类似 _.zipObject,除了它支持属性路径。 This method is like _.zipObject except that it supports property paths.

_.zipWith

这个方法类似 _.zip, 除了它接受一个 iteratee 决定如何重组值。 iteratee 会调用每一组元素。

2.Collection(集合)

适用于数组和对象类型,部分适用于字符串,比如分组、查找、过滤等操作

_.countBy

创建一个组成对象,key是经过 iteratee 处理的集合的结果,value 是处理结果的次数。 iteratee 会传入一个参数:(value)。

_.each->forEach

迭代集合的元素并为每个元素调用iteratee。使用三个参数调用iteratee:(value,index | key,collection)。Iteratee函数可以通过显式返回false来提前退出迭代。

_.each->forEachRight

此方法类似于_.forEach,只是它从右到左遍历集合的元素。

_.every

通过 predicate 检查集合中的元素是否都返回 真值,只要 predicate 返回一次假值,遍历就停止,并返回 false。 predicate 会传入3个参数:(value, index|key, collection)

_.filter

遍历集合中的元素,筛选出一个经过 predicate 检查结果为真值的数组,predicate 会传入3个参数:(value, index|key, collection)。

_.find

遍历集合中的元素,返回最先经 predicate 检查为真值的元素。 predicate 会传入3个元素:(value, index|key, collection)。

_.findLast

这个方法类似 _.find,除了它是从右至左遍历集合的。

_.flatMap

通过遍历iteratee运行集合中的每个元素并展平映射结果,创建一个展平的值数组。使用三个参数调用iteratee:(value,index | key,collection)。

_.flatMapDeep

方法就像_.flatMap,除了它递归地展平映射结果。

_.flatMapDepth

此方法类似于_.flatMap,除了它以递归方式将映射结果展平为深度时间。

_.forEach

调用 iteratee 遍历集合中的元素, iteratee 会传入3个参数:(value, index|key, collection)。 如果显式的返回 false ,iteratee 会提前退出

_.forEachRight

这个方法类似 _.forEach,除了它是从右到左遍历的集合中的元素的。

_.groupBy

创建一个对象组成,key 是经 iteratee 处理的结果, value 是产生 key 的元素数组。 iteratee 会传入1个参数:(value)。

_.includes

检查 值 是否在 集合中,如果集合是字符串,那么检查 值 是否在字符串中。 其他情况用 SameValueZero 等值比较。 如果指定 fromIndex 是负数,从结尾开始检索。

_.invokeMap

调用 path 的方法处理集合中的每一个元素,返回处理的数组。 如何附加的参数会传入到调用方法中。如果方法名是个函数,集合中的每个元素都会被调用到。

_.keyBy

创建一个对象组成。key 是经 iteratee 处理的结果,value 是产生key的元素。 iteratee 会传入1个参数:(value)。

_.map

创建一个经过 iteratee 处理的集合中每一个元素的结果数组。 iteratee 会传入3个参数:(value, index|key, collection)。

_.orderBy

这个方法类似 _.sortBy,除了它允许指定 iteratees 结果如何排序。 如果没指定 orders,所有值以升序排序。 其他情况,指定 “desc” 降序,指定 “asc” 升序其对应值。

_.partition

创建一个拆分为两部分的数组。 第一部分是 predicate 检查为真值的,第二部分是 predicate 检查为假值的。 predicate 会传入3个参数:(value, index|key, collection)。

_.reduce

通过 iteratee 遍历集合中的每个元素。 每次返回的值会作为下一次 iteratee 使用。 如果没有提供 accumulator,则集合中的第一个元素作为 accumulator。 iteratee 会传入4个参数:(accumulator, value, index|key, collection)。

_.reduceRight

这个方法类似 _.reduce ,除了它是从右到左遍历的。

_.reject

反向版 _.filter,这个方法返回 predicate 检查为非真值的元素。

_.sample

从集合中随机获得元素

_.sampleSize

获得从集合中随机获得 N 个元素 Gets n random elements from collection.

_.shuffle

创建一个被打乱元素的集合。 使用了 Fisher-Yates shuffle 版本。

_.size

返回集合的长度或对象中可枚举属性的个数。

_.some

通过 predicate 检查集合中的元素是否存在任意真值的元素,只要 predicate 返回一次真值,遍历就停止,并返回 true。 predicate 会传入3个参数:(value, index|key, collection)。

_.sortBy

创建一个元素数组。 以 iteratee 处理的结果升序排序。 这个方法执行稳定排序,也就是说相同元素会保持原始排序。 iteratees 会传入1个参数:(value)。

3.Date(日期)

_.now

获得 Unix 纪元(1970 1月1日 00:00:00 UTC) 直到现在的毫秒数。

4.Function(函数)

适用于函数类型,比如节流、延迟、缓存、设置钩子等操作

_.after

反向版 _.before。 这个方法创建一个新函数,当调用 N 次或者多次之后将触发 func 方法。

_.ary

创建一个最多接受 N 个参数,忽略多余参数的方法。

_.before

创建一个调用 func 的函数。 调用次数不超过 N 次。 之后再调用这个函数,将返回最后一个调用的结果。

_.bind

创建一个函数 func,这个函数的 this 会被绑定在 thisArg。 并且任何附加在 _.bind 的参数会被传入到这个绑定函数上。 这个 _.bind.placeholder 的值,默认是以 _ 作为附加部分参数的占位符。

_.bindKey

创建一个函数。 该方法绑定 object[key] 的方法。 任何附加在 _.bindKey 的参数会预设到该绑定函数上。

_.curry

创建一个函数,该函数接收一个或多个 func 的参数。 当该函数被调用时,如果 func 所需要传递的所有参数都被提供,则直接返回 func 所执行的结果。 否则继续返回该函数并等待接收剩余的参数。 可以使用 func.length 强制需要累积的参数个数。

_.curryRight

这个方法类似 _.curry。 除了它接受参数的方式用 _.partialRight 代替了 _.partial。这个 _.curry.placeholder 的值,默认是以 _ 作为附加部分参数的占位符。

_.debounce

创建一个防抖动函数。 该函数会在 wait 毫秒后调用 func 方法。 该函数提供一个 cancel 方法取消延迟的函数调用以及 flush 方法立即调用。 可以提供一个 options 对象决定如何调用 func 方法, options.leading 与|或 options.trailing 决定延迟前后如何触发。 func 会传入最后一次传入的参数给防抖动函数。 随后调用的防抖动函数返回是最后一次 func 调用的结果。

_.defer

延迟调用 func 直到当前堆栈清理完毕。 任何附加的参数会传入到 func。

_.delay

延迟 wait 毫秒后调用 func。 任何附加的参数会传入到 func。

_.flip

创建一个翻转接收参数的 func 函数。

_.memoize

创建一个会缓存 func 结果的函数。 如果提供了 resolver,就用 resolver 的返回值作为 key 缓存函数的结果。 默认情况下用第一个参数作为缓存的 key。 func 在调用时 this 会绑定在缓存函数上

_.negate

创建一个对 func 结果 取反的函数。 用 predicate 对 func 检查的时候,this 绑定到创建的函数,并传入对应参数。

_.once

创建一个只能调用一次的函数。 重复调用返回第一次调用的结果。 func 调用时,this 绑定到创建的函数,并传入对应参数。

_.overArgs

创建一个函数,调用时func 参数会先一对一的改变。

_.partial

创建一个函数。 该函数调用 func,并传入预设的参数。 这个方法类似 _.bind,除了它不会绑定 this。 这个 _.partial.placeholder 的值,默认是以 _ 作为附加部分参数的占位符。

_.partialRight

这个函数类似 _.partial,除了它是从右到左预设参数的。 这个 .partialRight.placeholder 的值,默认是以 作为附加部分参数的占位符。

_.rearg

创建一个调用 func 的函数。 所传递的参数根据 indexes 调整到对应位置。 第一个 index 对应到第一个传参,第二个 index 对应到第二个传参,以此类推。

_.rest

创建一个调用 func 的函数。 this 绑定到这个函数 并且 从 start 之后的参数都作为数组传入。

_.spread

创建一个调用 func 的函数。 this 绑定到这个函数上。 把参数作为数组传入,类似于 Function#apply

_.throttle

创建一个节流函数,在 wait 秒内最多执行 func 一次的函数。 该函数提供一个 cancel 方法取消延迟的函数调用以及 flush 方法立即调用。 可以提供一个 options 对象决定如何调用 func 方法, options.leading 与|或 options.trailing 决定 wait 前后如何触发。 func 会传入最后一次传入的参数给这个函数。 随后调用的函数返回是最后一次 func 调用的结果。

_.unary

创建一个最多接受一个参数的函数,忽略多余的参数。

_.wrap

创建一个函数。提供的 value 包装在 wrapper 函数的第一个参数里。 任何附加的参数都提供给 wrapper 函数。 被调用时 this 绑定在创建的函数上。

5.Lang

普遍适用于各种类型,常用于执行类型判断和类型转换

_.castArray

如果 value 不是数组, 那么强制转为数组

_.clone

创建一个 value 的浅拷贝。

_.cloneDeep

这个方法类似 _.clone,除了它会递归拷贝 value。

_.cloneDeepWith

这个方法类似 _.cloneWith,除了它会递归拷贝 value。

_.cloneWith

这个方法类似 _.clone,除了它接受一个 customizer 定制返回的拷贝值。 如果 customizer 返回 undefined 将会拷贝处理方法代替。 customizer 会传入5个参数:(value [, index|key, object, stack])

_.conformsTo

通过使用object的相应属性值调用source的谓词属性来检查对象是否符合源。

_.eq

执行 SameValueZero 比较两者的值确定它们是否相等。

_.gt

检查 value 是否大于 other

_.gte

检查 value 是否大于等于 other

_.isArguments

检查 value 是否是 类 arguments 对象。

_.isArray

检查 value 是否是 Array 类对象。

_.isArrayBuffer

检查 value 是否是 ArrayBuffer 对象。

_.isArrayLike

检查 value 是否是类数组。 如果是类数组的话,应该不是一个函数,而且 value.length 是个整数,大于等于 0,小于或等于 Number.MAX_SAFE_INTEGER

_.isArrayLikeObject

这个方法类似 _.isArrayLike,除了它还检查值是否是个对象。

_.isBoolean

检查 value 是否是原始 boolean 类型或者对象。

_.isBuffer

检查 value 是否是个 buffer

_.isDate

检查 value 是否是 Date 类型

_.isElement

检查 value 是否是可能是 DOM 元素

_.isEmpty

检查 value 是否为空。 判断的依据是除非是有枚举属性的对象,length 大于 0 的 arguments object, array, string 或类jquery选择器。

_.isEqual

执行深比较来决定两者的值是否相等。

_.isEqualWith

这个方法类似 _.isEqual。 除了它接受一个 customizer 定制比较值。 如果 customizer 返回 undefined 将会比较处理方法代替。 customizer 会传入7个参数:(objValue, othValue [, index|key, object, other, stack])

_.isError

检查 value 是否是 Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, 或 URIError object.

_.isFinite

检查 value 是否是原始 finite number。

_.isFunction

检查 value 是否是 Function 对象。

_.isInteger

检查 value 是否是整数。

_.isLength

检查 value 是否是有效长度

_.isMap

检查 value 是否是个 Map 对象

_.isMatch

执行一个深比较来确定object 是否包含有 source 的属性值。

_.isMatchWith

这个方法类似 _.isMatch。 除了它接受一个 customizer 定制比较的值。 如果 customizer 返回 undefined 将会比较处理方法代替。 customizer 会传入5个参数:(objValue, srcValue, index|key, object, source)

_.isNaN

检查 value 是否是 NaN.

_.isNative

检查 value 是否是原生函数

_.isNil

检查 value 是否是 null 或者 undefined。

_.isNull

检查 value 是否是 null.

_.isNumber

检查 value 是否是原始数值型 或者 对象。

_.isObject

检查 value 是否是 Object 的 language type。 (例如: arrays, functions, objects, regexes, new Number(0), 以及 new String(‘’))

_.isObjectLike

检查 value 是否是 类对象。 类对象应该不是 null 以及 typeof 的结果是 “object”。

_.isPlainObject

检查 value 是否是普通对象。 也就是说该对象由 Object 构造函数创建或者 [[Prototype]] 为空。

_.isRegExp

检查 value 是否是 RegExp 对象

_.isSafeInteger

检查 value 是否是安全整数。 这个整数应该是符合 IEEE-754 标准的非双精度浮点数。

_.isSet

检查 value 是否是 Set 对象。

_.isString

检查 value 是否是原始字符串或者对象。

_.isSymbol

检查 value 是否是原始 Symbol 或者对象。

_.isTypedArray

检查 value 是否是TypedArray。

_.isUndefined

检查 value 是否是 undefined.

_.isWeakMap

检查 value 是否是 WeakMap 对象

_.isWeakSet

检查 value 是否是 WeakSet 对象

_.lt

检查 value 是否是 小于 other。

_.lte

检查 value 是否是 小于等于 other.

_.toArray

转换 value 为数组

_.toFinite

将值转换为有限数字。

_.toInteger

转换 value 为整数

_.toLength

转换 value 为用作类数组对象的长度整数。

_.toNumber

转换 value 为数值

_.toPlainObject

转换 value 为普通对象。 包括继承的可枚举属性。

_.toSafeInteger

转换 value 为安全整数。 安全整数可以用于比较和准确的表示。

_.toString

如果 value 不是字符串,将其转换为字符串。 null 和 undefined 将返回空字符串。

6.Math

适用于数值类型,常用于执行数学运算

_.add

相加两个数

_.ceil

根据 precision 向上舍入 number。

_.divide

除以两个数字

_.floor

根据 precision 向下保留 number。

_.max

计算 array 中最大的值。 如果 array 是 空的或者假值将会返回 undefined。

_.maxBy

这个方法类似 _.max 除了它接受 iteratee 调用每一个元素,根据返回的 value 决定排序准则。 iteratee 会传入1个参数:(value)。

_.mean

计算 array 的平均值。

_.meanBy

此方法与_.mean类似,不同之处在于它接受为数组中的每个元素调用的iteratee,以生成要平均的值。使用一个参数调用iteratee :( value)。以来

_.min

计算 array 中最小的值。 如果 array 是 空的或者假值将会返回 undefined。

_.minBy

这个方法类似 _.min。 除了它接受 iteratee 调用每一个元素,根据返回的 value 决定排序准则。 iteratee 会传入1个参数:(value)。

_.multiply

相乘

_.round

根据 precision 四舍五入 number。

_.subtract

相减

_.sum

计算 array 中值的总和

_.sumBy

这个方法类似 _.sum。 除了它接受 iteratee 调用每一个元素,根据返回的 value 决定如何计算。 iteratee 会传入1个参数:(value)。

7.Number(数字)

适用于生成随机数,比较数值与数值区间的关系

_.clamp

返回限制在 min 和 max 之间的值

_.inRange

检查 n 是否在 start 与 end 之间,但不包括 end。 如果 end 没有指定,那么 start 设置为0。 如果 start 大于 end,那么参数会交换以便支持负范围

_.random

产生一个包括 min 与 max 之间的数。 如果只提供一个参数返回一个0到提供数之间的数。 如果 floating 设为 true,或者 min 或 max 是浮点数,结果返回浮点数。

8.Object(对象)

适用于对象类型,常用于对象的创建、扩展、类型转换、检索、集合等操作

_.assign

分配来源对象的可枚举属性到目标对象上。 来源对象的应用规则是从左到右,随后的下一个对象的属性会覆盖上一个对象的属性。

_.assignIn

这个方法类似 _.assign。 除了它会遍历并继承来源对象的属性。

_.assignInwith

这个方法类似 _.assignIn。 除了它接受一个 customizer决定如何分配值。 如果customizer返回undefined将会由分配处理方法代替。customizer` 会传入5个参数:(objValue, srcValue, key, object, source)

_.assignWith

这个方法类似 _.assign。 除了它接受一个 customizer决定如何分配值。 如果customizer返回undefined将会由分配处理方法代替。customizer` 会传入5个参数:(objValue, srcValue, key, object, source)

_.at

根据 object 的路径获取值为数组。

_.create

创建一个继承 prototype 的对象。 如果提供了 properties,它的可枚举属性会被分配到创建的对象上。

_.defaults

分配来源对象的可枚举属性到目标对象所有解析为 undefined 的属性上。 来源对象从左到右应用。 一旦设置了相同属性的值,后续的将被忽略掉。

_.defaultsDeep

这个方法类似 _.defaults,除了它会递归分配默认属性。

_.entries->toPairs

_.entriesIn->toPairsIn

_.extend->assignIn

_.extendWith->assignInwith

_.findKey

这个方法类似 _.find。 除了它返回最先被 predicate 判断为真值的元素 key,而不是元素本身。

_.findLastKey

这个方法类似 _.findKey。 不过它是反方向开始遍历的。

_.forIn

使用 iteratee 遍历对象的自身和继承的可枚举属性。 iteratee 会传入3个参数:(value, key, object)。 如果返回 false,iteratee 会提前退出遍历。

_.forInRight

这个方法类似 _.forIn。 除了它是反方向开始遍历的。

_.forOwn

使用 iteratee 遍历自身的可枚举属性。 iteratee 会传入3个参数:(value, key, object)。 如果返回 false,iteratee 会提前退出遍历。

_.forOwnRight

这个方法类似 _.forOwn。 除了它是反方向开始遍历的。

_.functions

返回一个 function 对象自身可枚举属性名的数组。

_.functionsIn

返回一个 function 对象自身和继承的可枚举属性名的数组。

_.get

根据对象路径获取值。 如果解析 value 是 undefined 会以 defaultValue 取代

_.has

检查 path 是否是对象的直接属性。

_.hasIn

检查 path 是否是对象的直接 或者 继承属性。

_.invert

创建一个键值倒置的对象。 如果 object 有重复的值,后面的值会覆盖前面的值。 如果 multiVal 为 true,重复的值则组成数组。

_.invertBy

这个方法类似 _.invert。 除了它接受 iteratee 调用每一个元素,可在返回值中定制key。 iteratee 会传入1个参数:(value)。

_.invoke

调用对象路径的方法

_.keys

创建 object 自身可枚举属性名为一个数组。

_.keysIn

创建 object 自身 或 继承的可枚举属性名为一个数组。

_.mapKeys

反向版 _.mapValues。 这个方法创建一个对象,对象的值与源对象相同,但 key 是通过 iteratee 产生的。

_.mapValues

创建一个对象,对象的key相同,值是通过 iteratee 产生的。 iteratee 会传入3个参数: (value, key, object)

_.merge

递归合并来源对象的自身和继承的可枚举属性到目标对象。 跳过来源对象解析为 undefined 的属性。 数组和普通对象会递归合并,其他对象和值会被直接分配。 来源对象从左到右分配,后续的来源对象属性会覆盖之前分配的属性。

_.mergeWith

这个方法类似 _.merge。 除了它接受一个 customizer 决定如何合并。 如果 customizer 返回 undefined 将会由合并处理方法代替。

_.omit

反向版 _.pick。 这个方法返回忽略属性之外的自身和继承的可枚举属性。

_.omitBy

反向版 _.pickBy。 这个方法返回经 predicate 判断不是真值的属性的自身和继承的可枚举属性。

_.pick

创建一个从 object 中选中的属性的对象。

_.pickBy

创建一个从 object 中经 predicate 判断为真值的属性为对象。 predicate 会传入1个参数:(value)

_.result

这个方法类似 _.get。 除了如果解析到的值是一个函数的话,就绑定 this 到这个函数并返回执行后的结果。

_.set

设置值到对象对应的属性路径上,如果没有则创建这部分路径。 缺少的索引属性会创建为数组,而缺少的属性会创建为对象。 使用 _.setWith 定制创建。

_.setWith

这个方法类似 _.set。 除了它接受一个 customizer 决定如何设置对象路径的值。 如果 customizer 返回 undefined 将会有它的处理方法代替。 customizer 会传入3个参数:(nsValue, key, nsObject) 注意: 这个方法会改变源对象

_.toPairs

创建一个对象自身可枚举属性的键值对数组。

_.toPairsIn

创建一个对象自身和继承的可枚举属性的键值对数组。

_.transform

_.reduce 的代替方法。 这个方法会改变对象为一个新的 accumulator 对象,来自每一次经 iteratee 处理自身可枚举对象的结果。 每次调用可能会改变 accumulator 对象。 iteratee 会传入4个对象:(accumulator, value, key, object)。 如果返回 false,iteratee 会提前退出

_.unset

移除对象路径的属性。 注意: 这个方法会改变源对象

_.update

_.updateWith

_.values

创建 object 自身可枚举属性的值为数组

_.valuesIn

创建 object 自身和继承的可枚举属性的值为数组

9.Seq

常用于创建链式调用,提高执行性能(惰性计算)

_.chain

创建一个经 lodash 包装的对象以启用显式链模式,要解除链必须使用 _#value 方法。

_.tap

这个方法调用一个 interceptor 并返回 value。interceptor 传入一个参数:(value) 目的是 进入 链的中间以便执行操作。

_.thru

这个方法类似 _.tap, 除了它返回 interceptor 的返回结果

_.prototype[Symbol.iterator]

_.prototype.at

这个方法是 _.at 的包装版本

_.prototype.chain

开启包装对象的显式链。

_.prototype.commit

执行链式队列并返回结果

_.prototype.next

获得包装对象的下一个值,遵循 iterator 协议

_.prototype.plant

创建一个链式队列的拷贝,传入的值作为链式队列的值。

_.prototype.reverse

_.prototype.toJSON->value

_.prototype.valueOf->value

10.String(字符串)

_.camelCase

转换字符串为 驼峰写法

_.capitalize

转换字符串首字母为大写,剩下为小写

_.deburr

转换 latin-1 supplementary letters#Character_table) 为基本拉丁字母,并删除变音符。

_.endsWith

检查给定的字符是否是字符串的结尾

_.escape

转义字符 “&”, “<”, “>”, ‘”’, “’”, 以及 “`” 为HTML实体字符。

_.escapeRegExp

转义RegExp 中特殊的字符 “^”, “$”, “", “.”, “*”, “+”, “?”, “(“, “)”, “[”, “]”, “{“, “}”, 以及 “|“。

_.kebabCase

转换字符串为 kebab case。

_.lowerCase

以空格分开单词并转换为小写。

_.lowerFirst

转换首字母为小写。

_.pad

如果字符串长度小于 length 则从左到右填充字符。 如果没法平均分配,则截断超出的长度。

_.padEnd

如果字符串长度小于 length 则在右侧填充字符。 如果超出长度则截断超出的部分

_.padStart

如果字符串长度小于 length 则在左侧填充字符。 如果超出长度则截断超出的部分

_.parseInt

以指定的基数转换字符串为整数。 如果基数是 undefined 或者 0,则基数默认是10,如果字符串是16进制,则基数为16。

_.repeat

重复 N 次字符串

_.replace

替换字符串中匹配的内容为给定的内容

_.snakeCase

转换字符串为 snake case

_.split

以 separator 拆分字符串

_.startCase

转换字符串为 start case

_.startsWith

检查字符串是否以 target 开头。

_.template

创建一个预编译模板方法,可以插入数据到模板中 “interpolate” 分隔符相应的位置。 HTML会在 “escape” 分隔符中转换为相应实体。 在 “evaluate” 分隔符中允许执行JavaScript代码。 在模板中可以自由访问变量。 如果设置了选项对象,则会优先覆盖 _.templateSettings 的值。

_.toLower

转换整体的字符串为小写

_.toUpper

转换整体的字符串为大写

_.trim

从字符串中移除前面和后面的空白 或 指定的字符。

_.trimEnd

移除字符串后面的空白 或 指定的字符。

_.trimStart

移除字符串中前面的空白 或 指定的字符。

_.truncate

截断字符串,如果字符串超出了限定的最大值。 被截断的字符串后面会以 omission 代替,omission 默认是 “…“。

_.unescape

反向版 _.escape。 这个方法转换 HTML 实体 &, <, >, ", ', 以及 ` 为对应的字符。

_.upperCase

转换字符串为空格分割的大写单词

_.upperFirst

转换首字母为大写。

_.words

拆分字符串中的词为数组

11.Util(工具)

_.attempt

尝试调用函数,返回结果 或者 错误对象。 任何附加的参数都会在调用时传给函数。

_.bindAll

绑定对象的方法到对象本身,覆盖已存在的方法。

_.cond

创建一个函数。 这个函数会遍历 pairs,并执行最先返回真值对应的函数,并绑定 this 及传入创建函数的参数

_.conforms

创建一个函数。 这个函数会调用 source 的属性名对应的 predicate 与传入对象相对应属性名的值进行 predicate 处理。 如果都符合返回 true,否则返回 false

_.constant

创建一个返回 value 的函数

_.defaultTo

_.flow

创建一个函数。 返回的结果是调用提供函数的结果,this 会绑定到创建函数。 每一个连续调用,传入的参数都是前一个函数返回的结果。

_.flowRight

这个方法类似 _.flow,除了它调用函数的顺序是从右往左的。

_.identity

这个方法返回首个提供的参数

_.iteratee

创建一个调用 func 的函数。 如果 func 是一个属性名,传入包含这个属性名的对象,回调返回对应属性名的值。 如果 func 是一个对象,传入的元素有相同的对象属性,回调返回 true。 其他情况返回 false。

_.matches

创建一个深比较的方法来比较给定的对象和 source 对象。 如果给定的对象拥有相同的属性值返回 true,否则返回 false

_.matchesProperty

创建一个深比较的方法来比较给定对象的 path 的值是否是 srcValue。 如果是返回 true,否则返回 false

_.method

创建一个调用给定对象 path 上的函数。 任何附加的参数都会传入这个调用函数中。

_.methodOf

反向版 _.method。 这个创建一个函数调用给定 object 的 path 上的方法, 任何附加的参数都会传入这个调用函数中。

_.mixin

添加来源对象自身的所有可枚举函数属性到目标对象。 如果 object 是个函数,那么函数方法将被添加到原型链上。

_.noConflict

释放 _ 为原来的值,并返回一个 lodash 的引用

_.noop

无论传递什么参数,都返回 undefined。

_.nthArg

创建一个返回第 N 个参数的函数。

_.over

创建一个传入提供的参数的函数并调用 iteratees 返回结果的函数

_.overEvery

创建一个传入提供的参数的函数并调用 iteratees 判断是否 全部 都为真值的函数。

_.overSome

创建一个传入提供的参数的函数并调用 iteratees 判断是否 存在 有真值的函数。

_.property

创建一个返回给定对象的 path 的值的函数。

_.propertyOf

反向版 _.property。 这个方法创建的函数返回给定 path 在对象上的值。

_.range

创建一个包含从 start 到 end,但不包含 end 本身范围数字的数组。 如果 start 是负数,而 end 或 step 没有指定,那么 step 从 -1 为开始。 如果 end 没有指定,start 设置为 0。 如果 end 小于 start,会创建一个空数组,除非指定了 step。

_.rangeRight

这个方法类似 _.range, 除了它是降序生成值的。

_.runInContext

创建一个给定上下文对象的原始的 lodash 函数。

_.stubArray

_.stubFalse

_.stubObject

_.stubString

_.stubTrue

_.times

调用 iteratee N 次,每次调用返回的结果存入到数组中。 iteratee 会传入1个参数:(index)。

_.toPath

创建 value 为属性路径的数组

_uniqueId

创建唯一ID。 如果提供了 prefix,会被添加到ID前缀上。

12.Porperties(属性)

_.VERSION

_.templateSettings

_.templateSettings.escape

_.templateSettings.evaluate

_.templateSettings.imports

_.templateSettings.interpolate

_.templateSettings.variable

13.Methods(方法)

.templateSettings.imports.

14.小菜常用方法

_.map

获取一个数组对象中的value值,并返回一个数组

let arr = [{name:'张三',age:19},{name:'王五',age:20},{name:'老6',age:21}]

_.map(arr,'name')

['张三','王五','老6']

_.assignIn

一个对象属性替换掉另个对象的属性,就是合并

let user = {name:'酱大饼',age:30,child:{name:'酱小兵',age:5}}
let user1 = {name:"王老五"}
_.assignIn(user,user1)

{name:'王老五',age:30,child:{name:'酱小兵',age:5}}

_.cloneDeep

深拷贝

let user = {name:'酱大饼',age:30,child:{name:'酱小兵',age:5}}
let user1 = _.cloneDeep(user)

user1.child.name = '王老五';

//user
{name:'酱大饼',age:30,child:{name:'酱小兵',age:5}}

//user1
{name:'酱大饼',age:30,child:{name:'王老五',age:5}}