Skip to main content

chain

_.chain(value) # Ⓢ [Ⓣ][1]

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​

  1. 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'

plicitly 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

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