Lodash 中文文档 (v3.10.1) – “Chain” 要领
Translated by PeckZeg
Original Docs: Lodash v3.10.1 Docs
“Chain” 要领
_(value)
建立一个包括 value
的 lodash
对象以开启内置的要领链。要领链对返回数组、鸠合或函数的要领发生作用,而且要领可以被链式挪用。那些猎取单值或可以返回一个原始值的要领将自动完毕要领链而且返回一个未包裹成 lodash
对象的值。假如明白须要链式挪用可以运用 _.chain
。链式挪用的加载将是耽误加载,这表明挪用将耽误到间接或直接挪用 _#value
要领。
耽误盘算支撑一些要领疾速兼并。疾速兼并是一个最优兼并迭代器挪用的战略。如许做可以协助防止一些盘算中心天生的数据结构,而且可以大大下降迭代器的实行次数。
链式挪用支撑自定义天生效果。只需在天生的时刻直接或间接的包括 _#value
要领。
另外,关于 lodash 的要领,包装集具有 Array
和 String
的要领。
Array
包装集的要领有:
concat
, join
, pop
, push
, reverse
, shift
, slice
, sort
, splice
和 unshift
String
包装集的要领有:
replace
和 split
支撑疾速兼并的包装集要领有:
compact
, drop
, dropRight
, dropRightWhile
, dropWhile
, filter
, first
, initial
, last
, map
, pluck
, reject
, rest
, reverse
, slice
, take
, takeRight
, takeRightWhile
, takeWhile
, toArray
和 where
可链式挪用的包装集要领有:
after
, ary
, assign
, at
, before
, bind
, bindAll
, bindKey
, callback
, chain
, chunk
, commit
, compact
, concat
, constant
, countBy
, create
, curry
, debounce
, defaults
, defaultsDeep
, defer
, delay
, difference
, drop
, dropRight
, dropRightWhile
, dropWhile
, fill
, filter
, flatten
, flattenDeep
, flow
, flowRight
, forEach
, forEachRight
, forIn
, forInRight
, forOwn
, forOwnRight
, functions
, groupBy
, indexBy
, initial
, intersection
, invert
, invoke
, keys
, keysIn
, map
, mapKeys
, mapValues
, matches
, matchesProperty
, memoize
, merge
, method
, methodOf
, mixin
, modArgs
, negate
, omit
, once
, pairs
, partial
, partialRight
, partition
, pick
, plant
, pluck
, property
, propertyOf
, pull
, pullAt
, push
, range
, rearg
, reject
, remove
, rest
, restParam
, reverse
, set
, shuffle
, slice
, sort
, sortBy
, sortByAll
, sortByOrder
, splice
, spread
, take
, takeRight
, takeRightWhile
, takeWhile
, tap
, throttle
, thru
, times
, toArray
, toPlainObject
, transform
, union
, uniq
, unshift
, unzip
, unzipWith
, values
, valuesIn
, where
, without
, wrap
, xor
, zip
, zipObject
, zipWith
默许不能被链式挪用的包装集要领有:
add
, attempt
, camelCase
, capitalize
, ceil
, clone
, cloneDeep
, deburr
, endsWith
, escape
, escapeRegExp
, every
, find
, findIndex
, findKey
, findLast
, findLastIndex
, findLastKey
, findWhere
, first
, floor
, get
, gt
, gte
, has
, identity
, includes
, indexOf
, inRange
, isArguments
, isArray
, isBoolean
, isDate
, isElement
, isEmpty
, isEqual
, isError
, isFinite isFunction
, isMatch
, isNative
, isNaN
, isNull
, isNumber
, isObject
, isPlainObject
, isRegExp
, isString
, isUndefined
, isTypedArray
, join
, kebabCase
, last
, lastIndexOf
, lt
, lte
, max
, min
, noConflict
, noop
, now
, pad
, padLeft
, padRight
, parseInt
, pop
, random
, reduce
, reduceRight
, repeat
, result
, round
, runInContext
, shift
, size
, snakeCase
, some
, sortedIndex
, sortedLastIndex
, startCase
, startsWith
, sum
, template
, trim
, trimLeft
, trimRight
, trunc
, unescape
, uniqueId
, value
和 words
包装集函数 sample
在参数供应 n
的情况下将返回包装集,其他情况下将返回未经包装过的值。
参数
value
(*) : 待包装至lodash
实例的值
返回
(Object) : 返回一个新的 lodash
包装集实例
示例
var wrapped = _([1, 2, 3]);
// 返回一个未包装的值
wrapped.reduce(function(total, n) {
return total + n;
});
// → 6
// 返回一个包装值
var squares = wrapped.map(function(n) {
return n * n;
});
_.isArray(squares);
// → false
_.isArray(squares.value());
// → true
_.chain(value)
建立一个明白可以被链式挪用的 lodash
对象
参数
value
(*) : 待包装的值
返回
(Object) : 返回一个新的 lodash
包装实例
示例
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'pebbles', 'age': 1 }
];
var youngest = _.chain(users)
.sortBy('age')
.map(function(chr) {
return chr.user + ' is ' + chr.age;
})
.first()
.value();
// → 'pebbles is 1'
_.tap(value, interceptor, [thisArg])
该要领实行 interceptor
并返回 value
。该拦截器将绑定 thisArg
并在实行时传入一个参数:value
。该要领的目标是“应用”要领链去操纵链中的中心效果。
参数
value
(*) : 供应给拦截器的值interceptor
(Function) : 待实行的函数[thisArg]
(*) :interceptor
绑定的this
返回
(*) : 返回值
示例
_([1, 2, 3])
.tap(function(array) {
array.pop();
})
.reverse()
.value();
// → [2, 1]
_.thru(value, interceptor, [thisArg])
This method is like _.tap except that it returns the result of interceptor.
该要领相似 _.tap
,但其返回拦截器的值。
参数
value
(*) : 供应给拦截器的值interceptor
(Function) : 待实行的函数[thisArg]
(*) :interceptor
绑定的this
返回
(*) : 返回 interceptor
的效果
示例
_(' abc ')
.chain()
.trim()
.thru(function(value) {
return [value];
})
.value();
// → ['abc']
_.prototype.chain()
在包装对象上显式开启链式挪用
返回
(Object) : 返回一个新的 lodash
包装实例
示例
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 }
];
// 不运用显式挪用链
_(users).first();
// → { 'user': 'barney', 'age': 36 }
// 运用显式挪用链
_(users).chain()
.first()
.pick('user')
.value();
// → { 'user': 'barney' }
_.prototype.commit()
实行挪用链行列并返回包装集效果
返回
(Object) : 返回新的 lodash
包装集实例
示例
var array = [1, 2];
var wrapped = _(array).push(3);
console.log(array);
// → [1, 2]
wrapped = wrapped.commit();
console.log(array);
// → [1, 2, 3]
wrapped.last();
// → 3
console.log(array);
// → [1, 2, 3]
_.prototype.concat([values])
Creates a new array joining a wrapped array with any additional arrays and/or values.
建立一个含有衔接其他数组和(或)值的新数组包装集。
参数
[values]
(…*) : 带衔接的值
返回
(Array) : 返回一个已衔接的新数组
示例
var array = [1];
var wrapped = _(array).concat(2, [3], [[4]]);
console.log(wrapped.value());
// → [1, 2, 3, [4]]
console.log(array);
// → [1]
_.prototype.plant()
建立一个链式挪用行列的克隆(会将 value
替换为克隆后的链式挪用链中)。
返回
(Object) : 返回一个新的 lodash
包装实例
示例
var array = [1, 2];
var wrapped = _(array).map(function(value) {
return Math.pow(value, 2);
});
var other = [3, 4];
var otherWrapped = wrapped.plant(other);
otherWrapped.value();
// → [9, 16]
wrapped.value();
// → [1, 4]
_.prototype.reverse()
翻转包装数组,将第一个元素和末了一个元素对调,第二个元素和倒数第二个元素对调,以此类推。
注重:该要领会修正包装数组。
返回
(Object) : 返回一个已翻转过的数组的 lodash
包装实例
示例
var array = [1, 2, 3];
_(array).reverse().value()
// → [3, 2, 1]
console.log(array);
// → [3, 2, 1]
_.prototype.toString()
Produces the result of coercing the unwrapped value to a string.
发生强迫将值转为未包装的字符串果。
返回
(string) : 返回强迫转为字符串的值
示例
_([1, 2, 3]).toString();
// → '1,2,3'
_.prototype.value()
实行要领链行列并提取未包装的值
别号
_.prototype.run
_.prototype.toJSON
_.prototype.valueOf
返回
(*) : 返回已处置惩罚的未包装的值
示例
_([1, 2, 3]).value();
// → [1, 2, 3]