_(value)
Creates a lodash
object which wraps value
to enable implicit method
chain sequences. Methods that operate on and return arrays, collections,
and functions can be chained together. Methods that retrieve a single value
or may return a primitive value will automatically end the chain sequence
and return the unwrapped value. Otherwise, the value must be unwrapped
with _#value
.
Explicit chain sequences, which must be unwrapped with _#value
, may be
enabled using _.chain
.
The execution of chained methods is lazy, that is, it’s deferred until
_#value
is implicitly or explicitly called.
Lazy evaluation allows several methods to support shortcut fusion.
Shortcut fusion is an optimization to merge iteratee calls; this avoids
the creation of intermediate arrays and can greatly reduce the number of
iteratee executions. Sections of a chain sequence qualify for shortcut
fusion if the section is applied to an array and iteratees accept only
one argument. The heuristic for whether a section qualifies for shortcut
fusion is subject to change.
Chaining is supported in custom builds as long as the _#value
method is
directly or indirectly included in the build.
In addition to lodash methods, wrappers have Array
and String
methods.
The wrapper Array
methods are:
concat
, join
, pop
, push
, shift
, sort
, splice
, and unshift
The wrapper String
methods are:
replace
and split
The wrapper methods that support shortcut fusion are:
at
, compact
, drop
, dropRight
, dropWhile
, filter
, find
,
findLast
, head
, initial
, last
, map
, reject
, reverse
, slice
,
tail
, take
, takeRight
, takeRightWhile
, takeWhile
, and toArray
The chainable wrapper methods are:
after
, ary
, assign
, assignIn
, assignInWith
, assignWith
, at
,
before
, bind
, bindAll
, bindKey
, castArray
, chain
, chunk
,
commit
, compact
, concat
, conforms
, constant
, countBy
, create
,
curry
, debounce
, defaults
, defaultsDeep
, defer
, delay
,
difference
, differenceBy
, differenceWith
, drop
, dropRight
,
dropRightWhile
, dropWhile
, extend
, extendWith
, fill
, filter
,
flatMap
, flatMapDeep
, flatMapDepth
, flatten
, flattenDeep
,
flattenDepth
, flip
, flow
, flowRight
, fromPairs
, functions
,
functionsIn
, groupBy
, initial
, intersection
, intersectionBy
,
intersectionWith
, invert
, invertBy
, invokeMap
, iteratee
, keyBy
,
keys
, keysIn
, map
, mapKeys
, mapValues
, matches
, matchesProperty
,
memoize
, merge
, mergeWith
, method
, methodOf
, mixin
, negate
,
nthArg
, omit
, omitBy
, once
, orderBy
, over
, overArgs
,
overEvery
, overSome
, partial
, partialRight
, partition
, pick
,
pickBy
, plant
, property
, propertyOf
, pull
, pullAll
, pullAllBy
,
pullAllWith
, pullAt
, push
, range
, rangeRight
, rearg
, reject
,
remove
, rest
, reverse
, sampleSize
, set
, setWith
, shuffle
,
slice
, sort
, sortBy
, splice
, spread
, tail
, take
, takeRight
,
takeRightWhile
, takeWhile
, tap
, throttle
, thru
, toArray
,
toPairs
, toPairsIn
, toPath
, toPlainObject
, transform
, unary
,
union
, unionBy
, unionWith
, uniq
, uniqBy
, uniqWith
, unset
,
unshift
, unzip
, unzipWith
, update
, updateWith
, values
,
valuesIn
, without
, wrap
, xor
, xorBy
, xorWith
, zip
,
zipObject
, zipObjectDeep
, and zipWith
The wrapper methods that are not chainable by default are:
add
, attempt
, camelCase
, capitalize
, ceil
, clamp
, clone
,
cloneDeep
, cloneDeepWith
, cloneWith
, conformsTo
, deburr
,
defaultTo
, divide
, each
, eachRight
, endsWith
, eq
, escape
,
escapeRegExp
, every
, find
, findIndex
, findKey
, findLast
,
findLastIndex
, findLastKey
, first
, floor
, forEach
, forEachRight
,
forIn
, forInRight
, forOwn
, forOwnRight
, get
, gt
, gte
, has
,
hasIn
, head
, identity
, includes
, indexOf
, inRange
, invoke
,
isArguments
, isArray
, isArrayBuffer
, isArrayLike
, isArrayLikeObject
,
isBoolean
, isBuffer
, isDate
, isElement
, isEmpty
, isEqual
,
isEqualWith
, isError
, isFinite
, isFunction
, isInteger
, isLength
,
isMap
, isMatch
, isMatchWith
, isNaN
, isNative
, isNil
, isNull
,
isNumber
, isObject
, isObjectLike
, isPlainObject
, isRegExp
,
isSafeInteger
, isSet
, isString
, isUndefined
, isTypedArray
,
isWeakMap
, isWeakSet
, join
, kebabCase
, last
, lastIndexOf
,
lowerCase
, lowerFirst
, lt
, lte
, max
, maxBy
, mean
, meanBy
,
min
, minBy
, multiply
, noConflict
, noop
, now
, nth
, pad
,
padEnd
, padStart
, parseInt
, pop
, random
, reduce
, reduceRight
,
repeat
, result
, round
, runInContext
, sample
, shift
, size
,
snakeCase
, some
, sortedIndex
, sortedIndexBy
, sortedLastIndex
,
sortedLastIndexBy
, startCase
, startsWith
, stubArray
, stubFalse
,
stubObject
, stubString
, stubTrue
, subtract
, sum
, sumBy
,
template
, times
, toFinite
, toInteger
, toJSON
, toLength
,
toLower
, toNumber
, toSafeInteger
, toString
, toUpper
, trim
,
trimEnd
, trimStart
, truncate
, unescape
, uniqueId
, upperCase
,
upperFirst
, value
, and words
Arguments
value
(*): The value to wrap in alodash
instance.
Returns
(Object): Returns the new lodash
wrapper instance.
Example
function square(n) {
return n * n;
}
var wrapped = _([1, 2, 3]);
// Returns an unwrapped value.
wrapped.reduce(_.add);
// => 6
// Returns a wrapped value.
var squares = wrapped.map(square);
_.isArray(squares);
// => false
_.isArray(squares.value());
// => true
_.chain(value)
Creates a lodash
wrapper instance that wraps value
with explicit method
chain sequences enabled. The result of such sequences must be unwrapped
with _#value
.
Since
1.3.0
Arguments
value
(*): The value to wrap.
Returns
(Object): Returns the new lodash
wrapper instance.
Example
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'pebbles', 'age': 1 }
];
var youngest = _
.chain(users)
.sortBy('age')
.map(function(o) {
return o.user + ' is ' + o.age;
})
.head()
.value();
// => 'pebbles is 1'
_.tap(value, interceptor)
This method invokes interceptor
and returns value
. The interceptor
is invoked with one argument; (value). The purpose of this method is to
“tap into” a method chain sequence in order to modify intermediate results.
Since
0.1.0
Arguments
value
(*): The value to provide tointerceptor
.interceptor
(Function): The function to invoke.
Returns
(*): Returns value
.
Example
_([1, 2, 3])
.tap(function(array) {
// Mutate input array.
array.pop();
})
.reverse()
.value();
// => [2, 1]
_.thru(value, interceptor)
This method is like _.tap
except that it returns the result of interceptor
.
The purpose of this method is to “pass thru” values replacing intermediate
results in a method chain sequence.
Since
3.0.0
Arguments
value
(*): The value to provide tointerceptor
.interceptor
(Function): The function to invoke.
Returns
(*): Returns the result of interceptor
.
Example
_(' abc ')
.chain()
.trim()
.thru(function(value) {
return [value];
})
.value();
// => ['abc']
_.prototype[Symbol.iterator]()
Enables the wrapper to be iterable.
Since
4.0.0
Returns
(Object): Returns the wrapper object.
Example
var wrapped = _([1, 2]);
wrapped[Symbol.iterator]() === wrapped;
// => true
Array.from(wrapped);
// => [1, 2]
_.prototype.at([paths])
This method is the wrapper version of _.at
.
Since
1.0.0
Arguments
[paths]
(…(string|string[])): The property paths to pick.
Returns
(Object): Returns the new lodash
wrapper instance.
Example
var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };
_(object).at(['a[0].b.c', 'a[1]']).value();
// => [3, 4]
_.prototype.chain()
Creates a lodash
wrapper instance with explicit method chain sequences enabled.
Since
0.1.0
Returns
(Object): Returns the new lodash
wrapper instance.
Example
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 }
];
// A sequence without explicit chaining.
_(users).head();
// => { 'user': 'barney', 'age': 36 }
// A sequence with explicit chaining.
_(users)
.chain()
.head()
.pick('user')
.value();
// => { 'user': 'barney' }
_.prototype.commit()
Executes the chain sequence and returns the wrapped result.
Since
3.2.0
Returns
(Object): Returns the new lodash
wrapper instance.
Example
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.next()
Gets the next value on a wrapped object following the iterator protocol.
Since
4.0.0
Returns
(Object): Returns the next iterator value.
Example
var wrapped = _([1, 2]);
wrapped.next();
// => { 'done': false, 'value': 1 }
wrapped.next();
// => { 'done': false, 'value': 2 }
wrapped.next();
// => { 'done': true, 'value': undefined }
_.prototype.plant(value)
Creates a clone of the chain sequence planting value
as the wrapped value.
Since
3.2.0
Arguments
value
(*): The value to plant.
Returns
(Object): Returns the new lodash
wrapper instance.
Example
function square(n) {
return n * n;
}
var wrapped = _([1, 2]).map(square);
var other = wrapped.plant([3, 4]);
other.value();
// => [9, 16]
wrapped.value();
// => [1, 4]
_.prototype.reverse()
This method is the wrapper version of _.reverse
.
Note: This method mutates the wrapped array.
Since
0.1.0
Returns
(Object): Returns the new lodash
wrapper instance.
Example
var array = [1, 2, 3];
_(array).reverse().value()
// => [3, 2, 1]
console.log(array);
// => [3, 2, 1]
_.prototype.value()
Executes the chain sequence to resolve the unwrapped value.
Since
0.1.0
Aliases
.prototype.toJSON, .prototype.valueOf
Returns
(*): Returns the resolved unwrapped value.
Example
_([1, 2, 3]).value();
// => [1, 2, 3]