new _(value) → {Object}
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
Parameters:
| Name | Type | Description |
|---|---|---|
value |
* | The value to wrap in a |
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
Members
-
static add
-
Adds two numbers.
- Since:
- 3.4.0
Example
_.add(6, 4); // => 10 -
static assign
-
Assigns own enumerable string keyed properties of source objects to the
destination object. Source objects are applied from left to right.
Subsequent sources overwrite property assignments of previous sources.Note: This method mutates
objectand is loosely based on
Object.assign.- Since:
- 0.10.0
- See:
-
- _.assignIn
Example
function Foo() { this.a = 1; } function Bar() { this.c = 3; } Foo.prototype.b = 2; Bar.prototype.d = 4; _.assign({ 'a': 0 }, new Foo, new Bar); // => { 'a': 1, 'c': 3 } -
static assignWith
-
This method is like
_.assignexcept that it acceptscustomizer
which is invoked to produce the assigned values. Ifcustomizerreturns
undefined, assignment is handled by the method instead. Thecustomizer
is invoked with five arguments: (objValue, srcValue, key, object, source).Note: This method mutates
object.- Since:
- 4.0.0
- See:
-
- _.assignInWith
Example
function customizer(objValue, srcValue) { return _.isUndefined(objValue) ? srcValue : objValue; } var defaults = _.partialRight(_.assignWith, customizer); defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); // => { 'a': 1, 'b': 2 } -
static at
-
This method is the wrapper version of
_.at.- Since:
- 1.0.0
Example
var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; _(object).at(['a[0].b.c', 'a[1]']).value(); // => [3, 4] -
static at
-
Creates an array of values corresponding to
pathsofobject.- Since:
- 1.0.0
Example
var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; _.at(object, ['a[0].b.c', 'a[1]']); // => [3, 4] -
static attempt
-
Attempts to invoke
func, returning either the result or the caught error
object. Any additional arguments are provided tofuncwhen it's invoked.- Since:
- 3.0.0
Example
// Avoid throwing errors for invalid selectors. var elements = _.attempt(function(selector) { return document.querySelectorAll(selector); }, '>_>'); if (_.isError(elements)) { elements = []; } -
static bind
-
Creates a function that invokes
funcwith thethisbinding ofthisArg
andpartialsprepended to the arguments it receives.The
_.bind.placeholdervalue, which defaults to_in monolithic builds,
may be used as a placeholder for partially applied arguments.Note: Unlike native
Function#bind, this method doesn't set the "length"
property of bound functions.- Since:
- 0.1.0
Example
function greet(greeting, punctuation) { return greeting + ' ' + this.user + punctuation; } var object = { 'user': 'fred' }; var bound = _.bind(greet, object, 'hi'); bound('!'); // => 'hi fred!' // Bound with placeholders. var bound = _.bind(greet, object, _, '!'); bound('hi'); // => 'hi fred!' -
static bindAll
-
Binds methods of an object to the object itself, overwriting the existing
method.Note: This method doesn't set the "length" property of bound functions.
- Since:
- 0.1.0
Example
var view = { 'label': 'docs', 'click': function() { console.log('clicked ' + this.label); } }; _.bindAll(view, ['click']); jQuery(element).on('click', view.click); // => Logs 'clicked docs' when clicked. -
static bindKey
-
Creates a function that invokes the method at
object[key]withpartials
prepended to the arguments it receives.This method differs from
_.bindby allowing bound functions to reference
methods that may be redefined or don't yet exist. See
Peter Michaux's article
for more details.The
_.bindKey.placeholdervalue, which defaults to_in monolithic
builds, may be used as a placeholder for partially applied arguments.- Since:
- 0.10.0
Example
var object = { 'user': 'fred', 'greet': function(greeting, punctuation) { return greeting + ' ' + this.user + punctuation; } }; var bound = _.bindKey(object, 'greet', 'hi'); bound('!'); // => 'hi fred!' object.greet = function(greeting, punctuation) { return greeting + 'ya ' + this.user + punctuation; }; bound('!'); // => 'hiya fred!' // Bound with placeholders. var bound = _.bindKey(object, 'greet', _, '!'); bound('hi'); // => 'hiya fred!' -
static camelCase
-
Converts
stringto camel case.- Since:
- 3.0.0
Example
_.camelCase('Foo Bar'); // => 'fooBar' _.camelCase('--foo-bar--'); // => 'fooBar' _.camelCase('__FOO_BAR__'); // => 'fooBar' -
static ceil
-
Computes
numberrounded up toprecision.- Since:
- 3.10.0
Example
_.ceil(4.006); // => 5 _.ceil(6.004, 2); // => 6.01 _.ceil(6040, -2); // => 6100 -
static chain
-
Creates a
lodashwrapper instance with explicit method chain sequences enabled.- Since:
- 0.1.0
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' } -
static commit
-
Executes the chain sequence and returns the wrapped result.
- Since:
- 3.2.0
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] -
static countBy
-
Creates an object composed of keys generated from the results of running
each element ofcollectionthruiteratee. The corresponding value of
each key is the number of times the key was returned byiteratee. The
iteratee is invoked with one argument: (value).- Since:
- 0.5.0
Example
_.countBy([6.1, 4.2, 6.3], Math.floor); // => { '4': 1, '6': 2 } // The `_.property` iteratee shorthand. _.countBy(['one', 'two', 'three'], 'length'); // => { '3': 2, '5': 1 } -
static defaults
-
Assigns own and inherited enumerable string keyed properties of source
objects to the destination object for all destination properties that
resolve toundefined. Source objects are applied from left to right.
Once a property is set, additional values of the same property are ignored.Note: This method mutates
object.- Since:
- 0.1.0
- See:
Example
_.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); // => { 'a': 1, 'b': 2 } -
static defaultsDeep
-
This method is like
_.defaultsexcept that it recursively assigns
default properties.Note: This method mutates
object.- Since:
- 3.10.0
- See:
Example
_.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); // => { 'a': { 'b': 2, 'c': 3 } } -
static defer
-
Defers invoking the
funcuntil the current call stack has cleared. Any
additional arguments are provided tofuncwhen it's invoked.- Since:
- 0.1.0
Example
_.defer(function(text) { console.log(text); }, 'deferred'); // => Logs 'deferred' after one millisecond. -
static delay
-
Invokes
funcafterwaitmilliseconds. Any additional arguments are
provided tofuncwhen it's invoked.- Since:
- 0.1.0
Example
_.delay(function(text) { console.log(text); }, 1000, 'later'); // => Logs 'later' after one second. -
static difference
-
Creates an array of
arrayvalues not included in the other given arrays
usingSameValueZero
for equality comparisons. The order and references of result values are
determined by the first array.Note: Unlike
_.pullAll, this method returns a new array.- Since:
- 0.1.0
- See:
-
- _.without, _.xor
Example
_.difference([2, 1], [2, 3]); // => [1] -
static differenceBy
-
This method is like
_.differenceexcept that it acceptsiterateewhich
is invoked for each element ofarrayandvaluesto generate the criterion
by which they're compared. The order and references of result values are
determined by the first array. The iteratee is invoked with one argument:
(value).Note: Unlike
_.pullAllBy, this method returns a new array.- Since:
- 4.0.0
Example
_.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); // => [1.2] // The `_.property` iteratee shorthand. _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); // => [{ 'x': 2 }] -
static differenceWith
-
This method is like
_.differenceexcept that it acceptscomparator
which is invoked to compare elements ofarraytovalues. The order and
references of result values are determined by the first array. The comparator
is invoked with two arguments: (arrVal, othVal).Note: Unlike
_.pullAllWith, this method returns a new array.- Since:
- 4.0.0
Example
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); // => [{ 'x': 2, 'y': 1 }] -
static divide
-
Divide two numbers.
- Since:
- 4.7.0
Example
_.divide(6, 4); // => 1.5 -
static entries
-
Creates an array of own enumerable string keyed-value pairs for
object
which can be consumed by_.fromPairs. Ifobjectis a map or set, its
entries are returned.- Since:
- 4.0.0
Example
function Foo() { this.a = 1; this.b = 2; } Foo.prototype.c = 3; _.toPairs(new Foo); // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) -
static entriesIn
-
Creates an array of own and inherited enumerable string keyed-value pairs
forobjectwhich can be consumed by_.fromPairs. Ifobjectis a map
or set, its entries are returned.- Since:
- 4.0.0
Example
function Foo() { this.a = 1; this.b = 2; } Foo.prototype.c = 3; _.toPairsIn(new Foo); // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) -
static extend
-
This method is like
_.assignexcept that it iterates over own and
inherited source properties.Note: This method mutates
object.- Since:
- 4.0.0
- See:
Example
function Foo() { this.a = 1; } function Bar() { this.c = 3; } Foo.prototype.b = 2; Bar.prototype.d = 4; _.assignIn({ 'a': 0 }, new Foo, new Bar); // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } -
static extendWith
-
This method is like
_.assignInexcept that it acceptscustomizer
which is invoked to produce the assigned values. Ifcustomizerreturns
undefined, assignment is handled by the method instead. Thecustomizer
is invoked with five arguments: (objValue, srcValue, key, object, source).Note: This method mutates
object.- Since:
- 4.0.0
- See:
Example
function customizer(objValue, srcValue) { return _.isUndefined(objValue) ? srcValue : objValue; } var defaults = _.partialRight(_.assignInWith, customizer); defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); // => { 'a': 1, 'b': 2 } -
static find
-
Iterates over elements of
collection, returning the first element
predicatereturns truthy for. The predicate is invoked with three
arguments: (value, index|key, collection).- Since:
- 0.1.0
Example
var users = [ { 'user': 'barney', 'age': 36, 'active': true }, { 'user': 'fred', 'age': 40, 'active': false }, { 'user': 'pebbles', 'age': 1, 'active': true } ]; _.find(users, function(o) { return o.age < 40; }); // => object for 'barney' // The `_.matches` iteratee shorthand. _.find(users, { 'age': 1, 'active': true }); // => object for 'pebbles' // The `_.matchesProperty` iteratee shorthand. _.find(users, ['active', false]); // => object for 'fred' // The `_.property` iteratee shorthand. _.find(users, 'active'); // => object for 'barney' -
static findLast
-
This method is like
_.findexcept that it iterates over elements of
collectionfrom right to left.- Since:
- 2.0.0
Example
_.findLast([1, 2, 3, 4], function(n) { return n % 2 == 1; }); // => 3 -
static floor
-
Computes
numberrounded down toprecision.- Since:
- 3.10.0
Example
_.floor(4.006); // => 4 _.floor(0.046, 2); // => 0.04 _.floor(4060, -2); // => 4000 -
static flow
-
Creates a function that returns the result of invoking the given functions
with thethisbinding of the created function, where each successive
invocation is supplied the return value of the previous.- Since:
- 3.0.0
- See:
Example
function square(n) { return n * n; } var addSquare = _.flow([_.add, square]); addSquare(1, 2); // => 9 -
static flowRight
-
This method is like
_.flowexcept that it creates a function that
invokes the given functions from right to left.- Since:
- 3.0.0
- See:
Example
function square(n) { return n * n; } var addSquare = _.flowRight([square, _.add]); addSquare(1, 2); // => 9 -
static groupBy
-
Creates an object composed of keys generated from the results of running
each element ofcollectionthruiteratee. The order of grouped values
is determined by the order they occur incollection. The corresponding
value of each key is an array of elements responsible for generating the
key. The iteratee is invoked with one argument: (value).- Since:
- 0.1.0
Example
_.groupBy([6.1, 4.2, 6.3], Math.floor); // => { '4': [4.2], '6': [6.1, 6.3] } // The `_.property` iteratee shorthand. _.groupBy(['one', 'two', 'three'], 'length'); // => { '3': ['one', 'two'], '5': ['three'] } -
static gt
-
Checks if
valueis greater thanother.- Since:
- 3.9.0
- See:
Example
_.gt(3, 1); // => true _.gt(3, 3); // => false _.gt(1, 3); // => false -
static gte
-
Checks if
valueis greater than or equal toother.- Since:
- 3.9.0
- See:
Example
_.gte(3, 1); // => true _.gte(3, 3); // => true _.gte(1, 3); // => false -
static intersection
-
Creates an array of unique values that are included in all given arrays
usingSameValueZero
for equality comparisons. The order and references of result values are
determined by the first array.- Since:
- 0.1.0
Example
_.intersection([2, 1], [2, 3]); // => [2] -
static intersectionBy
-
This method is like
_.intersectionexcept that it acceptsiteratee
which is invoked for each element of eacharraysto generate the criterion
by which they're compared. The order and references of result values are
determined by the first array. The iteratee is invoked with one argument:
(value).- Since:
- 4.0.0
Example
_.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); // => [2.1] // The `_.property` iteratee shorthand. _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); // => [{ 'x': 1 }] -
static intersectionWith
-
This method is like
_.intersectionexcept that it acceptscomparator
which is invoked to compare elements ofarrays. The order and references
of result values are determined by the first array. The comparator is
invoked with two arguments: (arrVal, othVal).- Since:
- 4.0.0
Example
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; _.intersectionWith(objects, others, _.isEqual); // => [{ 'x': 1, 'y': 2 }] -
static invert
-
Creates an object composed of the inverted keys and values of
object.
Ifobjectcontains duplicate values, subsequent values overwrite
property assignments of previous values.- Since:
- 0.7.0
Example
var object = { 'a': 1, 'b': 2, 'c': 1 }; _.invert(object); // => { '1': 'c', '2': 'b' } -
static invertBy
-
This method is like
_.invertexcept that the inverted object is generated
from the results of running each element ofobjectthruiteratee. The
corresponding inverted value of each inverted key is an array of keys
responsible for generating the inverted value. The iteratee is invoked
with one argument: (value).- Since:
- 4.1.0
Example
var object = { 'a': 1, 'b': 2, 'c': 1 }; _.invertBy(object); // => { '1': ['a', 'c'], '2': ['b'] } _.invertBy(object, function(value) { return 'group' + value; }); // => { 'group1': ['a', 'c'], 'group2': ['b'] } -
static invoke
-
Invokes the method at
pathofobject.- Since:
- 4.0.0
Example
var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; _.invoke(object, 'a[0].b.c.slice', 1, 3); // => [2, 3] -
static invokeMap
-
Invokes the method at
pathof each element incollection, returning
an array of the results of each invoked method. Any additional arguments
are provided to each invoked method. Ifpathis a function, it's invoked
for, andthisbound to, each element incollection.- Since:
- 4.0.0
Example
_.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); // => [[1, 5, 7], [1, 2, 3]] _.invokeMap([123, 456], String.prototype.split, ''); // => [['1', '2', '3'], ['4', '5', '6']] -
static isArguments
-
Checks if
valueis likely anargumentsobject.- Since:
- 0.1.0
Example
_.isArguments(function() { return arguments; }()); // => true _.isArguments([1, 2, 3]); // => false -
static isArray
-
Checks if
valueis classified as anArrayobject.- Since:
- 0.1.0
Example
_.isArray([1, 2, 3]); // => true _.isArray(document.body.children); // => false _.isArray('abc'); // => false _.isArray(_.noop); // => false -
static isArrayBuffer
-
Checks if
valueis classified as anArrayBufferobject.- Since:
- 4.3.0
Example
_.isArrayBuffer(new ArrayBuffer(2)); // => true _.isArrayBuffer(new Array(2)); // => false -
static isBuffer
-
Checks if
valueis a buffer.- Since:
- 4.3.0
Example
_.isBuffer(new Buffer(2)); // => true _.isBuffer(new Uint8Array(2)); // => false -
static isDate
-
Checks if
valueis classified as aDateobject.- Since:
- 0.1.0
Example
_.isDate(new Date); // => true _.isDate('Mon April 23 2012'); // => false -
static isMap
-
Checks if
valueis classified as aMapobject.- Since:
- 4.3.0
Example
_.isMap(new Map); // => true _.isMap(new WeakMap); // => false -
static isRegExp
-
Checks if
valueis classified as aRegExpobject.- Since:
- 0.1.0
Example
_.isRegExp(/abc/); // => true _.isRegExp('/abc/'); // => false -
static isSet
-
Checks if
valueis classified as aSetobject.- Since:
- 4.3.0
Example
_.isSet(new Set); // => true _.isSet(new WeakSet); // => false -
static isTypedArray
-
Checks if
valueis classified as a typed array.- Since:
- 3.0.0
Example
_.isTypedArray(new Uint8Array); // => true _.isTypedArray([]); // => false -
static kebabCase
-
Converts
stringto
kebab case.- Since:
- 3.0.0
Example
_.kebabCase('Foo Bar'); // => 'foo-bar' _.kebabCase('fooBar'); // => 'foo-bar' _.kebabCase('__FOO_BAR__'); // => 'foo-bar' -
static keyBy
-
Creates an object composed of keys generated from the results of running
each element ofcollectionthruiteratee. The corresponding value of
each key is the last element responsible for generating the key. The
iteratee is invoked with one argument: (value).- Since:
- 4.0.0
Example
var array = [ { 'dir': 'left', 'code': 97 }, { 'dir': 'right', 'code': 100 } ]; _.keyBy(array, function(o) { return String.fromCharCode(o.code); }); // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } _.keyBy(array, 'dir'); // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } -
static lowerCase
-
Converts
string, as space separated words, to lower case.- Since:
- 4.0.0
Example
_.lowerCase('--Foo-Bar--'); // => 'foo bar' _.lowerCase('fooBar'); // => 'foo bar' _.lowerCase('__FOO_BAR__'); // => 'foo bar' -
static lowerFirst
-
Converts the first character of
stringto lower case.- Since:
- 4.0.0
Example
_.lowerFirst('Fred'); // => 'fred' _.lowerFirst('FRED'); // => 'fRED' -
static lt
-
Checks if
valueis less thanother.- Since:
- 3.9.0
- See:
Example
_.lt(1, 3); // => true _.lt(3, 3); // => false _.lt(3, 1); // => false -
static lte
-
Checks if
valueis less than or equal toother.- Since:
- 3.9.0
- See:
Example
_.lte(1, 3); // => true _.lte(3, 3); // => true _.lte(3, 1); // => false -
static merge
-
This method is like
_.assignexcept that it recursively merges own and
inherited enumerable string keyed properties of source objects into the
destination object. Source properties that resolve toundefinedare
skipped if a destination value exists. Array and plain object properties
are merged recursively. Other objects and value types are overridden by
assignment. Source objects are applied from left to right. Subsequent
sources overwrite property assignments of previous sources.Note: This method mutates
object.- Since:
- 0.5.0
Example
var object = { 'a': [{ 'b': 2 }, { 'd': 4 }] }; var other = { 'a': [{ 'c': 3 }, { 'e': 5 }] }; _.merge(object, other); // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } -
static mergeWith
-
This method is like
_.mergeexcept that it acceptscustomizerwhich
is invoked to produce the merged values of the destination and source
properties. Ifcustomizerreturnsundefined, merging is handled by the
method instead. Thecustomizeris invoked with six arguments:
(objValue, srcValue, key, object, source, stack).Note: This method mutates
object.- Since:
- 4.0.0
Example
function customizer(objValue, srcValue) { if (_.isArray(objValue)) { return objValue.concat(srcValue); } } var object = { 'a': [1], 'b': [2] }; var other = { 'a': [3], 'b': [4] }; _.mergeWith(object, other, customizer); // => { 'a': [1, 3], 'b': [2, 4] } -
static method
-
Creates a function that invokes the method at
pathof a given object.
Any additional arguments are provided to the invoked method.- Since:
- 3.7.0
Example
var objects = [ { 'a': { 'b': _.constant(2) } }, { 'a': { 'b': _.constant(1) } } ]; _.map(objects, _.method('a.b')); // => [2, 1] _.map(objects, _.method(['a', 'b'])); // => [2, 1] -
static methodOf
-
The opposite of
_.method; this method creates a function that invokes
the method at a given path ofobject. Any additional arguments are
provided to the invoked method.- Since:
- 3.7.0
Example
var array = _.times(3, _.constant), object = { 'a': array, 'b': array, 'c': array }; _.map(['a[2]', 'c[0]'], _.methodOf(object)); // => [2, 0] _.map([['a', '2'], ['c', '0']], _.methodOf(object)); // => [2, 0] -
static multiply
-
Multiply two numbers.
- Since:
- 4.7.0
Example
_.multiply(6, 4); // => 24 -
static next
-
Gets the next value on a wrapped object following the
iterator protocol.- Since:
- 4.0.0
Example
var wrapped = _([1, 2]); wrapped.next(); // => { 'done': false, 'value': 1 } wrapped.next(); // => { 'done': false, 'value': 2 } wrapped.next(); // => { 'done': true, 'value': undefined } -
static now
-
Gets the timestamp of the number of milliseconds that have elapsed since
the Unix epoch (1 January 1970 00:00:00 UTC).- Since:
- 2.4.0
Example
_.defer(function(stamp) { console.log(_.now() - stamp); }, _.now()); // => Logs the number of milliseconds it took for the deferred invocation. -
static omit
-
The opposite of
_.pick; this method creates an object composed of the
own and inherited enumerable property paths ofobjectthat are not omitted.Note: This method is considerably slower than
_.pick.- Since:
- 0.1.0
Example
var object = { 'a': 1, 'b': '2', 'c': 3 }; _.omit(object, ['a', 'c']); // => { 'b': '2' } -
static over
-
Creates a function that invokes
iterateeswith the arguments it receives
and returns their results.- Since:
- 4.0.0
Example
var func = _.over([Math.max, Math.min]); func(1, 2, 3, 4); // => [4, 1] -
static overArgs
-
Creates a function that invokes
funcwith its arguments transformed.- Since:
- 4.0.0
Example
function doubled(n) { return n * 2; } function square(n) { return n * n; } var func = _.overArgs(function(x, y) { return [x, y]; }, [square, doubled]); func(9, 3); // => [81, 6] func(10, 5); // => [100, 10] -
static overEvery
-
Creates a function that checks if all of the
predicatesreturn
truthy when invoked with the arguments it receives.- Since:
- 4.0.0
Example
var func = _.overEvery([Boolean, isFinite]); func('1'); // => true func(null); // => false func(NaN); // => false -
static overSome
-
Creates a function that checks if any of the
predicatesreturn
truthy when invoked with the arguments it receives.- Since:
- 4.0.0
Example
var func = _.overSome([Boolean, isFinite]); func('1'); // => true func(null); // => true func(NaN); // => false -
static partial
-
Creates a function that invokes
funcwithpartialsprepended to the
arguments it receives. This method is like_.bindexcept it does not
alter thethisbinding.The
_.partial.placeholdervalue, which defaults to_in monolithic
builds, may be used as a placeholder for partially applied arguments.Note: This method doesn't set the "length" property of partially
applied functions.- Since:
- 0.2.0
Example
function greet(greeting, name) { return greeting + ' ' + name; } var sayHelloTo = _.partial(greet, 'hello'); sayHelloTo('fred'); // => 'hello fred' // Partially applied with placeholders. var greetFred = _.partial(greet, _, 'fred'); greetFred('hi'); // => 'hi fred' -
static partialRight
-
This method is like
_.partialexcept that partially applied arguments
are appended to the arguments it receives.The
_.partialRight.placeholdervalue, which defaults to_in monolithic
builds, may be used as a placeholder for partially applied arguments.Note: This method doesn't set the "length" property of partially
applied functions.- Since:
- 1.0.0
Example
function greet(greeting, name) { return greeting + ' ' + name; } var greetFred = _.partialRight(greet, 'fred'); greetFred('hi'); // => 'hi fred' // Partially applied with placeholders. var sayHelloTo = _.partialRight(greet, 'hello', _); sayHelloTo('fred'); // => 'hello fred' -
static partition
-
Creates an array of elements split into two groups, the first of which
contains elementspredicatereturns truthy for, the second of which
contains elementspredicatereturns falsey for. The predicate is
invoked with one argument: (value).- Since:
- 3.0.0
Example
var users = [ { 'user': 'barney', 'age': 36, 'active': false }, { 'user': 'fred', 'age': 40, 'active': true }, { 'user': 'pebbles', 'age': 1, 'active': false } ]; _.partition(users, function(o) { return o.active; }); // => objects for [['fred'], ['barney', 'pebbles']] // The `_.matches` iteratee shorthand. _.partition(users, { 'age': 1, 'active': false }); // => objects for [['pebbles'], ['barney', 'fred']] // The `_.matchesProperty` iteratee shorthand. _.partition(users, ['active', false]); // => objects for [['barney', 'pebbles'], ['fred']] // The `_.property` iteratee shorthand. _.partition(users, 'active'); // => objects for [['fred'], ['barney', 'pebbles']] -
static pick
-
Creates an object composed of the picked
objectproperties.- Since:
- 0.1.0
Example
var object = { 'a': 1, 'b': '2', 'c': 3 }; _.pick(object, ['a', 'c']); // => { 'a': 1, 'c': 3 } -
static plant
-
Creates a clone of the chain sequence planting
valueas the wrapped value.- Since:
- 3.2.0
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] -
static pull
-
Removes all given values from
arrayusing
SameValueZero
for equality comparisons.Note: Unlike
_.without, this method mutatesarray. Use_.remove
to remove elements from an array by predicate.- Since:
- 2.0.0
Example
var array = ['a', 'b', 'c', 'a', 'b', 'c']; _.pull(array, 'a', 'c'); console.log(array); // => ['b', 'b'] -
static pullAt
-
Removes elements from
arraycorresponding toindexesand returns an
array of removed elements.Note: Unlike
_.at, this method mutatesarray.- Since:
- 3.0.0
Example
var array = ['a', 'b', 'c', 'd']; var pulled = _.pullAt(array, [1, 3]); console.log(array); // => ['a', 'c'] console.log(pulled); // => ['b', 'd'] -
static range
-
Creates an array of numbers (positive and/or negative) progressing from
startup to, but not including,end. A step of-1is used if a negative
startis specified without anendorstep. Ifendis not specified,
it's set tostartwithstartthen set to0.Note: JavaScript follows the IEEE-754 standard for resolving
floating-point values which can produce unexpected results.- Since:
- 0.1.0
- See:
-
- _.inRange, _.rangeRight
Example
_.range(4); // => [0, 1, 2, 3] _.range(-4); // => [0, -1, -2, -3] _.range(1, 5); // => [1, 2, 3, 4] _.range(0, 20, 5); // => [0, 5, 10, 15] _.range(0, -4, -1); // => [0, -1, -2, -3] _.range(1, 4, 0); // => [1, 1, 1] _.range(0); // => [] -
static rangeRight
-
This method is like
_.rangeexcept that it populates values in
descending order.- Since:
- 4.0.0
- See:
-
- _.inRange, _.range
Example
_.rangeRight(4); // => [3, 2, 1, 0] _.rangeRight(-4); // => [-3, -2, -1, 0] _.rangeRight(1, 5); // => [4, 3, 2, 1] _.rangeRight(0, 20, 5); // => [15, 10, 5, 0] _.rangeRight(0, -4, -1); // => [-3, -2, -1, 0] _.rangeRight(1, 4, 0); // => [1, 1, 1] _.rangeRight(0); // => [] -
static rearg
-
Creates a function that invokes
funcwith arguments arranged according
to the specifiedindexeswhere the argument value at the first index is
provided as the first argument, the argument value at the second index is
provided as the second argument, and so on.- Since:
- 3.0.0
Example
var rearged = _.rearg(function(a, b, c) { return [a, b, c]; }, [2, 0, 1]); rearged('b', 'c', 'a') // => ['a', 'b', 'c'] -
static reverse
-
This method is the wrapper version of
_.reverse.Note: This method mutates the wrapped array.
- Since:
- 0.1.0
Example
var array = [1, 2, 3]; _(array).reverse().value() // => [3, 2, 1] console.log(array); // => [3, 2, 1] -
static round
-
Computes
numberrounded toprecision.- Since:
- 3.10.0
Example
_.round(4.006); // => 4 _.round(4.006, 2); // => 4.01 _.round(4060, -2); // => 4100 -
static snakeCase
-
Converts
stringto
snake case.- Since:
- 3.0.0
Example
_.snakeCase('Foo Bar'); // => 'foo_bar' _.snakeCase('fooBar'); // => 'foo_bar' _.snakeCase('--FOO-BAR--'); // => 'foo_bar' -
static sortBy
-
Creates an array of elements, sorted in ascending order by the results of
running each element in a collection thru each iteratee. This method
performs a stable sort, that is, it preserves the original sort order of
equal elements. The iteratees are invoked with one argument: (value).- Since:
- 0.1.0
Example
var users = [ { 'user': 'fred', 'age': 48 }, { 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }, { 'user': 'barney', 'age': 34 } ]; _.sortBy(users, [function(o) { return o.user; }]); // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] _.sortBy(users, ['user', 'age']); // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] -
static startCase
-
Converts
stringto
start case.- Since:
- 3.1.0
Example
_.startCase('--foo-bar--'); // => 'Foo Bar' _.startCase('fooBar'); // => 'Foo Bar' _.startCase('__FOO_BAR__'); // => 'FOO BAR' -
static subtract
-
Subtract two numbers.
- Since:
- 4.0.0
Example
_.subtract(6, 4); // => 2 -
static union
-
Creates an array of unique values, in order, from all given arrays using
SameValueZero
for equality comparisons.- Since:
- 0.1.0
Example
_.union([2], [1, 2]); // => [2, 1] -
static unionBy
-
This method is like
_.unionexcept that it acceptsiterateewhich is
invoked for each element of eacharraysto generate the criterion by
which uniqueness is computed. Result values are chosen from the first
array in which the value occurs. The iteratee is invoked with one argument:
(value).- Since:
- 4.0.0
Example
_.unionBy([2.1], [1.2, 2.3], Math.floor); // => [2.1, 1.2] // The `_.property` iteratee shorthand. _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); // => [{ 'x': 1 }, { 'x': 2 }] -
static unionWith
-
This method is like
_.unionexcept that it acceptscomparatorwhich
is invoked to compare elements ofarrays. Result values are chosen from
the first array in which the value occurs. The comparator is invoked
with two arguments: (arrVal, othVal).- Since:
- 4.0.0
Example
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; _.unionWith(objects, others, _.isEqual); // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] -
static upperCase
-
Converts
string, as space separated words, to upper case.- Since:
- 4.0.0
Example
_.upperCase('--foo-bar'); // => 'FOO BAR' _.upperCase('fooBar'); // => 'FOO BAR' _.upperCase('__foo_bar__'); // => 'FOO BAR' -
static upperFirst
-
Converts the first character of
stringto upper case.- Since:
- 4.0.0
Example
_.upperFirst('fred'); // => 'Fred' _.upperFirst('FRED'); // => 'FRED' -
static without
-
Creates an array excluding all given values using
SameValueZero
for equality comparisons.Note: Unlike
_.pull, this method returns a new array.- Since:
- 0.1.0
- See:
-
- _.difference, _.xor
Example
_.without([2, 1, 2, 3], 1, 2); // => [3] -
static xor
-
Creates an array of unique values that is the
symmetric difference
of the given arrays. The order of result values is determined by the order
they occur in the arrays.- Since:
- 2.4.0
- See:
-
- _.difference, _.without
Example
_.xor([2, 1], [2, 3]); // => [1, 3] -
static xorBy
-
This method is like
_.xorexcept that it acceptsiterateewhich is
invoked for each element of eacharraysto generate the criterion by
which by which they're compared. The order of result values is determined
by the order they occur in the arrays. The iteratee is invoked with one
argument: (value).- Since:
- 4.0.0
Example
_.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); // => [1.2, 3.4] // The `_.property` iteratee shorthand. _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); // => [{ 'x': 2 }] -
static xorWith
-
This method is like
_.xorexcept that it acceptscomparatorwhich is
invoked to compare elements ofarrays. The order of result values is
determined by the order they occur in the arrays. The comparator is invoked
with two arguments: (arrVal, othVal).- Since:
- 4.0.0
Example
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; _.xorWith(objects, others, _.isEqual); // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] -
static zip
-
Creates an array of grouped elements, the first of which contains the
first elements of the given arrays, the second of which contains the
second elements of the given arrays, and so on.- Since:
- 0.1.0
Example
_.zip(['a', 'b'], [1, 2], [true, false]); // => [['a', 1, true], ['b', 2, false]] -
static zipWith
-
This method is like
_.zipexcept that it acceptsiterateeto specify
how grouped values should be combined. The iteratee is invoked with the
elements of each group: (...group).- Since:
- 3.8.0
Example
_.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { return a + b + c; }); // => [111, 222] -
value
-
Executes the chain sequence to resolve the unwrapped value.
- Since:
- 0.1.0
Example
_([1, 2, 3]).value(); // => [1, 2, 3]
Methods
-
static after(n, func) → {function}
-
The opposite of
_.before; this method creates a function that invokes
funconce it's callednor more times.Parameters:
Name Type Description nnumber The number of calls before
funcis invoked.funcfunction The function to restrict.
Returns:
function -Returns the new restricted function.
- Since:
- 0.1.0
Example
var saves = ['profile', 'settings']; var done = _.after(saves.length, function() { console.log('done saving!'); }); _.forEach(saves, function(type) { asyncSave({ 'type': type, 'complete': done }); }); // => Logs 'done saving!' after the two async saves have completed. -
static ary(func, nopt) → {function}
-
Creates a function that invokes
func, with up tonarguments,
ignoring any additional arguments.Parameters:
Name Type Attributes Default Description funcfunction The function to cap arguments for.
nnumber <optional>
func.length The arity cap.
Returns:
function -Returns the new capped function.
- Since:
- 3.0.0
Example
_.map(['6', '8', '10'], _.ary(parseInt, 1)); // => [6, 8, 10] -
static before(n, func) → {function}
-
Creates a function that invokes
func, with thethisbinding and arguments
of the created function, while it's called less thanntimes. Subsequent
calls to the created function return the result of the lastfuncinvocation.Parameters:
Name Type Description nnumber The number of calls at which
funcis no longer invoked.funcfunction The function to restrict.
Returns:
function -Returns the new restricted function.
- Since:
- 3.0.0
Example
jQuery(element).on('click', _.before(5, addContactToList)); // => Allows adding up to 4 contacts to the list. -
static capitalize(stringopt) → {string}
-
Converts the first character of
stringto upper case and the remaining
to lower case.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to capitalize.
Returns:
string -Returns the capitalized string.
- Since:
- 3.0.0
Example
_.capitalize('FRED'); // => 'Fred' -
static castArray(value) → {Array}
-
Casts
valueas an array if it's not one.Parameters:
Name Type Description value* The value to inspect.
Returns:
Array -Returns the cast array.
- Since:
- 4.4.0
Example
_.castArray(1); // => [1] _.castArray({ 'a': 1 }); // => [{ 'a': 1 }] _.castArray('abc'); // => ['abc'] _.castArray(null); // => [null] _.castArray(undefined); // => [undefined] _.castArray(); // => [] var array = [1, 2, 3]; console.log(_.castArray(array) === array); // => true -
static chain(value) → {Object}
-
Creates a
lodashwrapper instance that wrapsvaluewith explicit method
chain sequences enabled. The result of such sequences must be unwrapped
with_#value.Parameters:
Name Type Description value* The value to wrap.
Returns:
Object -Returns the new
lodashwrapper instance.- Since:
- 1.3.0
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' -
static chunk(array, sizeopt) → {Array}
-
Creates an array of elements split into groups the length of
size.
Ifarraycan't be split evenly, the final chunk will be the remaining
elements.Parameters:
Name Type Attributes Default Description arrayArray The array to process.
sizenumber <optional>
1 The length of each chunk
Returns:
Array -Returns the new array of chunks.
- Since:
- 3.0.0
Example
_.chunk(['a', 'b', 'c', 'd'], 2); // => [['a', 'b'], ['c', 'd']] _.chunk(['a', 'b', 'c', 'd'], 3); // => [['a', 'b', 'c'], ['d']] -
static clamp(number, loweropt, upper) → {number}
-
Clamps
numberwithin the inclusivelowerandupperbounds.Parameters:
Name Type Attributes Description numbernumber The number to clamp.
lowernumber <optional>
The lower bound.
uppernumber The upper bound.
Returns:
number -Returns the clamped number.
- Since:
- 4.0.0
Example
_.clamp(-10, -5, 5); // => -5 _.clamp(10, -5, 5); // => 5 -
static clone(value) → {*}
-
Creates a shallow clone of
value.Note: This method is loosely based on the
structured clone algorithm
and supports cloning arrays, array buffers, booleans, date objects, maps,
numbers,Objectobjects, regexes, sets, strings, symbols, and typed
arrays. The own enumerable properties ofargumentsobjects are cloned
as plain objects. An empty object is returned for uncloneable values such
as error objects, functions, DOM nodes, and WeakMaps.Parameters:
Name Type Description value* The value to clone.
Returns:
* -Returns the cloned value.
- Since:
- 0.1.0
- See:
Example
var objects = [{ 'a': 1 }, { 'b': 2 }]; var shallow = _.clone(objects); console.log(shallow[0] === objects[0]); // => true -
static cloneDeep(value) → {*}
-
This method is like
_.cloneexcept that it recursively clonesvalue.Parameters:
Name Type Description value* The value to recursively clone.
Returns:
* -Returns the deep cloned value.
- Since:
- 1.0.0
- See:
Example
var objects = [{ 'a': 1 }, { 'b': 2 }]; var deep = _.cloneDeep(objects); console.log(deep[0] === objects[0]); // => false -
static cloneDeepWith(value, customizeropt) → {*}
-
This method is like
_.cloneWithexcept that it recursively clonesvalue.Parameters:
Name Type Attributes Description value* The value to recursively clone.
customizerfunction <optional>
The function to customize cloning.
Returns:
* -Returns the deep cloned value.
- Since:
- 4.0.0
- See:
Example
function customizer(value) { if (_.isElement(value)) { return value.cloneNode(true); } } var el = _.cloneDeepWith(document.body, customizer); console.log(el === document.body); // => false console.log(el.nodeName); // => 'BODY' console.log(el.childNodes.length); // => 20 -
static cloneWith(value, customizeropt) → {*}
-
This method is like
_.cloneexcept that it acceptscustomizerwhich
is invoked to produce the cloned value. Ifcustomizerreturnsundefined,
cloning is handled by the method instead. Thecustomizeris invoked with
up to four arguments; (value [, index|key, object, stack]).Parameters:
Name Type Attributes Description value* The value to clone.
customizerfunction <optional>
The function to customize cloning.
Returns:
* -Returns the cloned value.
- Since:
- 4.0.0
- See:
Example
function customizer(value) { if (_.isElement(value)) { return value.cloneNode(false); } } var el = _.cloneWith(document.body, customizer); console.log(el === document.body); // => false console.log(el.nodeName); // => 'BODY' console.log(el.childNodes.length); // => 0 -
static compact(array) → {Array}
-
Creates an array with all falsey values removed. The values
false,null,
0,"",undefined, andNaNare falsey.Parameters:
Name Type Description arrayArray The array to compact.
Returns:
Array -Returns the new array of filtered values.
- Since:
- 0.1.0
Example
_.compact([0, 1, false, 2, '', 3]); // => [1, 2, 3] -
static concat(array, …valuesopt) → {Array}
-
Creates a new array concatenating
arraywith any additional arrays
and/or values.Parameters:
Name Type Attributes Description arrayArray The array to concatenate.
values* <optional>
<repeatable>
The values to concatenate.
Returns:
Array -Returns the new concatenated array.
- Since:
- 4.0.0
Example
var array = [1]; var other = _.concat(array, 2, [3], [[4]]); console.log(other); // => [1, 2, 3, [4]] console.log(array); // => [1] -
static cond(pairs) → {function}
-
Creates a function that iterates over
pairsand invokes the corresponding
function of the first predicate to return truthy. The predicate-function
pairs are invoked with thethisbinding and arguments of the created
function.Parameters:
Name Type Description pairsArray The predicate-function pairs.
Returns:
function -Returns the new composite function.
- Since:
- 4.0.0
Example
var func = _.cond([ [_.matches({ 'a': 1 }), _.constant('matches A')], [_.conforms({ 'b': _.isNumber }), _.constant('matches B')], [_.stubTrue, _.constant('no match')] ]); func({ 'a': 1, 'b': 2 }); // => 'matches A' func({ 'a': 0, 'b': 1 }); // => 'matches B' func({ 'a': '1', 'b': '2' }); // => 'no match' -
static conforms(source) → {function}
-
Creates a function that invokes the predicate properties of
sourcewith
the corresponding property values of a given object, returningtrueif
all predicates return truthy, elsefalse.Note: The created function is equivalent to
_.conformsTowith
sourcepartially applied.Parameters:
Name Type Description sourceObject The object of property predicates to conform to.
Returns:
function -Returns the new spec function.
- Since:
- 4.0.0
Example
var objects = [ { 'a': 2, 'b': 1 }, { 'a': 1, 'b': 2 } ]; _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } })); // => [{ 'a': 1, 'b': 2 }] -
static conformsTo(object, source) → {boolean}
-
Checks if
objectconforms tosourceby invoking the predicate
properties ofsourcewith the corresponding property values ofobject.Note: This method is equivalent to
_.conformswhensourceis
partially applied.Parameters:
Name Type Description objectObject The object to inspect.
sourceObject The object of property predicates to conform to.
Returns:
boolean -Returns
trueifobjectconforms, elsefalse.- Since:
- 4.14.0
Example
var object = { 'a': 1, 'b': 2 }; _.conformsTo(object, { 'b': function(n) { return n > 1; } }); // => true _.conformsTo(object, { 'b': function(n) { return n > 2; } }); // => false -
static constant(value) → {function}
-
Creates a function that returns
value.Parameters:
Name Type Description value* The value to return from the new function.
Returns:
function -Returns the new constant function.
- Since:
- 2.4.0
Example
var objects = _.times(2, _.constant({ 'a': 1 })); console.log(objects); // => [{ 'a': 1 }, { 'a': 1 }] console.log(objects[0] === objects[1]); // => true -
static create(prototype, propertiesopt) → {Object}
-
Creates an object that inherits from the
prototypeobject. If a
propertiesobject is given, its own enumerable string keyed properties
are assigned to the created object.Parameters:
Name Type Attributes Description prototypeObject The object to inherit from.
propertiesObject <optional>
The properties to assign to the object.
Returns:
Object -Returns the new object.
- Since:
- 2.3.0
Example
function Shape() { this.x = 0; this.y = 0; } function Circle() { Shape.call(this); } Circle.prototype = _.create(Shape.prototype, { 'constructor': Circle }); var circle = new Circle; circle instanceof Circle; // => true circle instanceof Shape; // => true -
static curry(func, arityopt) → {function}
-
Creates a function that accepts arguments of
funcand either invokes
funcreturning its result, if at leastaritynumber of arguments have
been provided, or returns a function that accepts the remainingfunc
arguments, and so on. The arity offuncmay be specified iffunc.length
is not sufficient.The
_.curry.placeholdervalue, which defaults to_in monolithic builds,
may be used as a placeholder for provided arguments.Note: This method doesn't set the "length" property of curried functions.
Parameters:
Name Type Attributes Default Description funcfunction The function to curry.
aritynumber <optional>
func.length The arity of
func.Returns:
function -Returns the new curried function.
- Since:
- 2.0.0
Example
var abc = function(a, b, c) { return [a, b, c]; }; var curried = _.curry(abc); curried(1)(2)(3); // => [1, 2, 3] curried(1, 2)(3); // => [1, 2, 3] curried(1, 2, 3); // => [1, 2, 3] // Curried with placeholders. curried(1)(_, 3)(2); // => [1, 2, 3] -
static curryRight(func, arityopt) → {function}
-
This method is like
_.curryexcept that arguments are applied tofunc
in the manner of_.partialRightinstead of_.partial.The
_.curryRight.placeholdervalue, which defaults to_in monolithic
builds, may be used as a placeholder for provided arguments.Note: This method doesn't set the "length" property of curried functions.
Parameters:
Name Type Attributes Default Description funcfunction The function to curry.
aritynumber <optional>
func.length The arity of
func.Returns:
function -Returns the new curried function.
- Since:
- 3.0.0
Example
var abc = function(a, b, c) { return [a, b, c]; }; var curried = _.curryRight(abc); curried(3)(2)(1); // => [1, 2, 3] curried(2, 3)(1); // => [1, 2, 3] curried(1, 2, 3); // => [1, 2, 3] // Curried with placeholders. curried(3)(1, _)(2); // => [1, 2, 3] -
static debounce(func, waitopt, optionsopt) → {function}
-
Creates a debounced function that delays invoking
funcuntil afterwait
milliseconds have elapsed since the last time the debounced function was
invoked. The debounced function comes with acancelmethod to cancel
delayedfuncinvocations and aflushmethod to immediately invoke them.
Provideoptionsto indicate whetherfuncshould be invoked on the
leading and/or trailing edge of thewaittimeout. Thefuncis invoked
with the last arguments provided to the debounced function. Subsequent
calls to the debounced function return the result of the lastfunc
invocation.Note: If
leadingandtrailingoptions aretrue,funcis
invoked on the trailing edge of the timeout only if the debounced function
is invoked more than once during thewaittimeout.If
waitis0andleadingisfalse,funcinvocation is deferred
until to the next tick, similar tosetTimeoutwith a timeout of0.See David Corbacho's article
for details over the differences between_.debounceand_.throttle.Parameters:
Name Type Attributes Default Description funcfunction The function to debounce.
waitnumber <optional>
0 The number of milliseconds to delay.
optionsObject <optional>
{} The options object.
Properties
Name Type Attributes Default Description leadingboolean <optional>
false Specify invoking on the leading edge of the timeout.
maxWaitnumber <optional>
The maximum time
funcis allowed to be delayed before it's invoked.trailingboolean <optional>
true Specify invoking on the trailing edge of the timeout.
Returns:
function -Returns the new debounced function.
- Since:
- 0.1.0
Example
// Avoid costly calculations while the window size is in flux. jQuery(window).on('resize', _.debounce(calculateLayout, 150)); // Invoke `sendMail` when clicked, debouncing subsequent calls. jQuery(element).on('click', _.debounce(sendMail, 300, { 'leading': true, 'trailing': false })); // Ensure `batchLog` is invoked once after 1 second of debounced calls. var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); var source = new EventSource('/stream'); jQuery(source).on('message', debounced); // Cancel the trailing debounced invocation. jQuery(window).on('popstate', debounced.cancel); -
static deburr(stringopt) → {string}
-
Deburrs
stringby converting
Latin-1 Supplement
and Latin Extended-A
letters to basic Latin letters and removing
combining diacritical marks.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to deburr.
Returns:
string -Returns the deburred string.
- Since:
- 3.0.0
Example
_.deburr('déjà vu'); // => 'deja vu' -
static defaultTo(value, defaultValue) → {*}
-
Checks
valueto determine whether a default value should be returned in
its place. ThedefaultValueis returned ifvalueisNaN,null,
orundefined.Parameters:
Name Type Description value* The value to check.
defaultValue* The default value.
Returns:
* -Returns the resolved value.
- Since:
- 4.14.0
Example
_.defaultTo(1, 10); // => 1 _.defaultTo(undefined, 10); // => 10 -
static drop(array, nopt) → {Array}
-
Creates a slice of
arraywithnelements dropped from the beginning.Parameters:
Name Type Attributes Default Description arrayArray The array to query.
nnumber <optional>
1 The number of elements to drop.
Returns:
Array -Returns the slice of
array.- Since:
- 0.5.0
Example
_.drop([1, 2, 3]); // => [2, 3] _.drop([1, 2, 3], 2); // => [3] _.drop([1, 2, 3], 5); // => [] _.drop([1, 2, 3], 0); // => [1, 2, 3] -
static dropRight(array, nopt) → {Array}
-
Creates a slice of
arraywithnelements dropped from the end.Parameters:
Name Type Attributes Default Description arrayArray The array to query.
nnumber <optional>
1 The number of elements to drop.
Returns:
Array -Returns the slice of
array.- Since:
- 3.0.0
Example
_.dropRight([1, 2, 3]); // => [1, 2] _.dropRight([1, 2, 3], 2); // => [1] _.dropRight([1, 2, 3], 5); // => [] _.dropRight([1, 2, 3], 0); // => [1, 2, 3] -
static dropRightWhile(array, predicateopt) → {Array}
-
Creates a slice of
arrayexcluding elements dropped from the end.
Elements are dropped untilpredicatereturns falsey. The predicate is
invoked with three arguments: (value, index, array).Parameters:
Name Type Attributes Default Description arrayArray The array to query.
predicatefunction <optional>
_.identity The function invoked per iteration.
Returns:
Array -Returns the slice of
array.- Since:
- 3.0.0
Example
var users = [ { 'user': 'barney', 'active': true }, { 'user': 'fred', 'active': false }, { 'user': 'pebbles', 'active': false } ]; _.dropRightWhile(users, function(o) { return !o.active; }); // => objects for ['barney'] // The `_.matches` iteratee shorthand. _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); // => objects for ['barney', 'fred'] // The `_.matchesProperty` iteratee shorthand. _.dropRightWhile(users, ['active', false]); // => objects for ['barney'] // The `_.property` iteratee shorthand. _.dropRightWhile(users, 'active'); // => objects for ['barney', 'fred', 'pebbles'] -
static dropWhile(array, predicateopt) → {Array}
-
Creates a slice of
arrayexcluding elements dropped from the beginning.
Elements are dropped untilpredicatereturns falsey. The predicate is
invoked with three arguments: (value, index, array).Parameters:
Name Type Attributes Default Description arrayArray The array to query.
predicatefunction <optional>
_.identity The function invoked per iteration.
Returns:
Array -Returns the slice of
array.- Since:
- 3.0.0
Example
var users = [ { 'user': 'barney', 'active': false }, { 'user': 'fred', 'active': false }, { 'user': 'pebbles', 'active': true } ]; _.dropWhile(users, function(o) { return !o.active; }); // => objects for ['pebbles'] // The `_.matches` iteratee shorthand. _.dropWhile(users, { 'user': 'barney', 'active': false }); // => objects for ['fred', 'pebbles'] // The `_.matchesProperty` iteratee shorthand. _.dropWhile(users, ['active', false]); // => objects for ['pebbles'] // The `_.property` iteratee shorthand. _.dropWhile(users, 'active'); // => objects for ['barney', 'fred', 'pebbles'] -
static each(collection, iterateeopt) → {Array|Object}
-
Iterates over elements of
collectionand invokesiterateefor each element.
The iteratee is invoked with three arguments: (value, index|key, collection).
Iteratee functions may exit iteration early by explicitly returningfalse.Note: As with other "Collections" methods, objects with a "length"
property are iterated like arrays. To avoid this behavior use_.forIn
or_.forOwnfor object iteration.Parameters:
Name Type Attributes Default Description collectionArray | Object The collection to iterate over.
iterateefunction <optional>
_.identity The function invoked per iteration.
Returns:
Array | Object -Returns
collection.- Since:
- 0.1.0
- See:
-
- _.forEachRight
Example
_.forEach([1, 2], function(value) { console.log(value); }); // => Logs `1` then `2`. _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { console.log(key); }); // => Logs 'a' then 'b' (iteration order is not guaranteed). -
static eachRight(collection, iterateeopt) → {Array|Object}
-
This method is like
_.forEachexcept that it iterates over elements of
collectionfrom right to left.Parameters:
Name Type Attributes Default Description collectionArray | Object The collection to iterate over.
iterateefunction <optional>
_.identity The function invoked per iteration.
Returns:
Array | Object -Returns
collection.- Since:
- 2.0.0
- See:
-
- _.forEach
Example
_.forEachRight([1, 2], function(value) { console.log(value); }); // => Logs `2` then `1`. -
static endsWith(stringopt, targetopt, positionopt) → {boolean}
-
Checks if
stringends with the given target string.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to inspect.
targetstring <optional>
The string to search for.
positionnumber <optional>
string.length The position to search up to.
Returns:
boolean -Returns
trueifstringends withtarget,
elsefalse.- Since:
- 3.0.0
Example
_.endsWith('abc', 'c'); // => true _.endsWith('abc', 'b'); // => false _.endsWith('abc', 'b', 2); // => true -
static eq(value, other) → {boolean}
-
Performs a
SameValueZero
comparison between two values to determine if they are equivalent.Parameters:
Name Type Description value* The value to compare.
other* The other value to compare.
Returns:
boolean -Returns
trueif the values are equivalent, elsefalse.- Since:
- 4.0.0
Example
var object = { 'a': 1 }; var other = { 'a': 1 }; _.eq(object, object); // => true _.eq(object, other); // => false _.eq('a', 'a'); // => true _.eq('a', Object('a')); // => false _.eq(NaN, NaN); // => true -
static escape(stringopt) → {string}
-
Converts the characters "&", "<", ">", '"', and "'" in
stringto their
corresponding HTML entities.Note: No other characters are escaped. To escape additional
characters use a third-party library like he.Though the ">" character is escaped for symmetry, characters like
">" and "/" don't need escaping in HTML and have no special meaning
unless they're part of a tag or unquoted attribute value. See
Mathias Bynens's article
(under "semi-related fun fact") for more details.When working with HTML you should always
quote attribute values to reduce
XSS vectors.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to escape.
Returns:
string -Returns the escaped string.
- Since:
- 0.1.0
Example
_.escape('fred, barney, & pebbles'); // => 'fred, barney, & pebbles' -
static escapeRegExp(stringopt) → {string}
-
Escapes the
RegExpspecial characters "^", "$", "", ".", "*", "+",
"?", "(", ")", "[", "]", "{", "}", and "|" instring.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to escape.
Returns:
string -Returns the escaped string.
- Since:
- 3.0.0
Example
_.escapeRegExp('[lodash](https://lodash.com/)'); // => '\[lodash\]\(https://lodash\.com/\)' -
static every(collection, predicateopt) → {boolean}
-
Checks if
predicatereturns truthy for all elements ofcollection.
Iteration is stopped oncepredicatereturns falsey. The predicate is
invoked with three arguments: (value, index|key, collection).Note: This method returns
truefor
empty collections because
everything is true of
elements of empty collections.Parameters:
Name Type Attributes Default Description collectionArray | Object The collection to iterate over.
predicatefunction <optional>
_.identity The function invoked per iteration.
Returns:
boolean -Returns
trueif all elements pass the predicate check,
elsefalse.- Since:
- 0.1.0
Example
_.every([true, 1, null, 'yes'], Boolean); // => false var users = [ { 'user': 'barney', 'age': 36, 'active': false }, { 'user': 'fred', 'age': 40, 'active': false } ]; // The `_.matches` iteratee shorthand. _.every(users, { 'user': 'barney', 'active': false }); // => false // The `_.matchesProperty` iteratee shorthand. _.every(users, ['active', false]); // => true // The `_.property` iteratee shorthand. _.every(users, 'active'); // => false -
static fill(array, value, startopt, endopt) → {Array}
-
Fills elements of
arraywithvaluefromstartup to, but not
including,end.Note: This method mutates
array.Parameters:
Name Type Attributes Default Description arrayArray The array to fill.
value* The value to fill
arraywith.startnumber <optional>
0 The start position.
endnumber <optional>
array.length The end position.
Returns:
Array -Returns
array.- Since:
- 3.2.0
Example
var array = [1, 2, 3]; _.fill(array, 'a'); console.log(array); // => ['a', 'a', 'a'] _.fill(Array(3), 2); // => [2, 2, 2] _.fill([4, 6, 8, 10], '*', 1, 3); // => [4, '*', '*', 10] -
static filter(collection, predicateopt) → {Array}
-
Iterates over elements of
collection, returning an array of all elements
predicatereturns truthy for. The predicate is invoked with three
arguments: (value, index|key, collection).Note: Unlike
_.remove, this method returns a new array.Parameters:
Name Type Attributes Default Description collectionArray | Object The collection to iterate over.
predicatefunction <optional>
_.identity The function invoked per iteration.
Returns:
Array -Returns the new filtered array.
- Since:
- 0.1.0
- See:
Example
var users = [ { 'user': 'barney', 'age': 36, 'active': true }, { 'user': 'fred', 'age': 40, 'active': false } ]; _.filter(users, function(o) { return !o.active; }); // => objects for ['fred'] // The `_.matches` iteratee shorthand. _.filter(users, { 'age': 36, 'active': true }); // => objects for ['barney'] // The `_.matchesProperty` iteratee shorthand. _.filter(users, ['active', false]); // => objects for ['fred'] // The `_.property` iteratee shorthand. _.filter(users, 'active'); // => objects for ['barney'] -
static findIndex(array, predicateopt, fromIndexopt) → {number}
-
This method is like
_.findexcept that it returns the index of the first
elementpredicatereturns truthy for instead of the element itself.Parameters:
Name Type Attributes Default Description arrayArray The array to inspect.
predicatefunction <optional>
_.identity The function invoked per iteration.
fromIndexnumber <optional>
0 The index to search from.
Returns:
number -Returns the index of the found element, else
-1.- Since:
- 1.1.0
Example
var users = [ { 'user': 'barney', 'active': false }, { 'user': 'fred', 'active': false }, { 'user': 'pebbles', 'active': true } ]; _.findIndex(users, function(o) { return o.user == 'barney'; }); // => 0 // The `_.matches` iteratee shorthand. _.findIndex(users, { 'user': 'fred', 'active': false }); // => 1 // The `_.matchesProperty` iteratee shorthand. _.findIndex(users, ['active', false]); // => 0 // The `_.property` iteratee shorthand. _.findIndex(users, 'active'); // => 2 -
static findKey(object, predicateopt) → {string|undefined}
-
This method is like
_.findexcept that it returns the key of the first
elementpredicatereturns truthy for instead of the element itself.Parameters:
Name Type Attributes Default Description objectObject The object to inspect.
predicatefunction <optional>
_.identity The function invoked per iteration.
Returns:
string | undefined -Returns the key of the matched element,
elseundefined.- Since:
- 1.1.0
Example
var users = { 'barney': { 'age': 36, 'active': true }, 'fred': { 'age': 40, 'active': false }, 'pebbles': { 'age': 1, 'active': true } }; _.findKey(users, function(o) { return o.age < 40; }); // => 'barney' (iteration order is not guaranteed) // The `_.matches` iteratee shorthand. _.findKey(users, { 'age': 1, 'active': true }); // => 'pebbles' // The `_.matchesProperty` iteratee shorthand. _.findKey(users, ['active', false]); // => 'fred' // The `_.property` iteratee shorthand. _.findKey(users, 'active'); // => 'barney' -
static findLastIndex(array, predicateopt, fromIndexopt) → {number}
-
This method is like
_.findIndexexcept that it iterates over elements
ofcollectionfrom right to left.Parameters:
Name Type Attributes Default Description arrayArray The array to inspect.
predicatefunction <optional>
_.identity The function invoked per iteration.
fromIndexnumber <optional>
array.length-1 The index to search from.
Returns:
number -Returns the index of the found element, else
-1.- Since:
- 2.0.0
Example
var users = [ { 'user': 'barney', 'active': true }, { 'user': 'fred', 'active': false }, { 'user': 'pebbles', 'active': false } ]; _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); // => 2 // The `_.matches` iteratee shorthand. _.findLastIndex(users, { 'user': 'barney', 'active': true }); // => 0 // The `_.matchesProperty` iteratee shorthand. _.findLastIndex(users, ['active', false]); // => 2 // The `_.property` iteratee shorthand. _.findLastIndex(users, 'active'); // => 0 -
static findLastKey(object, predicateopt) → {string|undefined}
-
This method is like
_.findKeyexcept that it iterates over elements of
a collection in the opposite order.Parameters:
Name Type Attributes Default Description objectObject The object to inspect.
predicatefunction <optional>
_.identity The function invoked per iteration.
Returns:
string | undefined -Returns the key of the matched element,
elseundefined.- Since:
- 2.0.0
Example
var users = { 'barney': { 'age': 36, 'active': true }, 'fred': { 'age': 40, 'active': false }, 'pebbles': { 'age': 1, 'active': true } }; _.findLastKey(users, function(o) { return o.age < 40; }); // => returns 'pebbles' assuming `_.findKey` returns 'barney' // The `_.matches` iteratee shorthand. _.findLastKey(users, { 'age': 36, 'active': true }); // => 'barney' // The `_.matchesProperty` iteratee shorthand. _.findLastKey(users, ['active', false]); // => 'fred' // The `_.property` iteratee shorthand. _.findLastKey(users, 'active'); // => 'pebbles' -
static first(array) → {*}
-
Gets the first element of
array.Parameters:
Name Type Description arrayArray The array to query.
Returns:
* -Returns the first element of
array.- Since:
- 0.1.0
Example
_.head([1, 2, 3]); // => 1 _.head([]); // => undefined -
static flatMap(collection, iterateeopt) → {Array}
-
Creates a flattened array of values by running each element in
collection
thruiterateeand flattening the mapped results. The iteratee is invoked
with three arguments: (value, index|key, collection).Parameters:
Name Type Attributes Default Description collectionArray | Object The collection to iterate over.
iterateefunction <optional>
_.identity The function invoked per iteration.
Returns:
Array -Returns the new flattened array.
- Since:
- 4.0.0
Example
function duplicate(n) { return [n, n]; } _.flatMap([1, 2], duplicate); // => [1, 1, 2, 2] -
static flatMapDeep(collection, iterateeopt) → {Array}
-
This method is like
_.flatMapexcept that it recursively flattens the
mapped results.Parameters:
Name Type Attributes Default Description collectionArray | Object The collection to iterate over.
iterateefunction <optional>
_.identity The function invoked per iteration.
Returns:
Array -Returns the new flattened array.
- Since:
- 4.7.0
Example
function duplicate(n) { return [[[n, n]]]; } _.flatMapDeep([1, 2], duplicate); // => [1, 1, 2, 2] -
static flatMapDepth(collection, iterateeopt, depthopt) → {Array}
-
This method is like
_.flatMapexcept that it recursively flattens the
mapped results up todepthtimes.Parameters:
Name Type Attributes Default Description collectionArray | Object The collection to iterate over.
iterateefunction <optional>
_.identity The function invoked per iteration.
depthnumber <optional>
1 The maximum recursion depth.
Returns:
Array -Returns the new flattened array.
- Since:
- 4.7.0
Example
function duplicate(n) { return [[[n, n]]]; } _.flatMapDepth([1, 2], duplicate, 2); // => [[1, 1], [2, 2]] -
static flatten(array) → {Array}
-
Flattens
arraya single level deep.Parameters:
Name Type Description arrayArray The array to flatten.
Returns:
Array -Returns the new flattened array.
- Since:
- 0.1.0
Example
_.flatten([1, [2, [3, [4]], 5]]); // => [1, 2, [3, [4]], 5] -
static flattenDeep(array) → {Array}
-
Recursively flattens
array.Parameters:
Name Type Description arrayArray The array to flatten.
Returns:
Array -Returns the new flattened array.
- Since:
- 3.0.0
Example
_.flattenDeep([1, [2, [3, [4]], 5]]); // => [1, 2, 3, 4, 5] -
static flattenDepth(array, depthopt) → {Array}
-
Recursively flatten
arrayup todepthtimes.Parameters:
Name Type Attributes Default Description arrayArray The array to flatten.
depthnumber <optional>
1 The maximum recursion depth.
Returns:
Array -Returns the new flattened array.
- Since:
- 4.4.0
Example
var array = [1, [2, [3, [4]], 5]]; _.flattenDepth(array, 1); // => [1, 2, [3, [4]], 5] _.flattenDepth(array, 2); // => [1, 2, 3, [4], 5] -
static flip(func) → {function}
-
Creates a function that invokes
funcwith arguments reversed.Parameters:
Name Type Description funcfunction The function to flip arguments for.
Returns:
function -Returns the new flipped function.
- Since:
- 4.0.0
Example
var flipped = _.flip(function() { return _.toArray(arguments); }); flipped('a', 'b', 'c', 'd'); // => ['d', 'c', 'b', 'a'] -
static forIn(object, iterateeopt) → {Object}
-
Iterates over own and inherited enumerable string keyed properties of an
object and invokesiterateefor each property. The iteratee is invoked
with three arguments: (value, key, object). Iteratee functions may exit
iteration early by explicitly returningfalse.Parameters:
Name Type Attributes Default Description objectObject The object to iterate over.
iterateefunction <optional>
_.identity The function invoked per iteration.
Returns:
Object -Returns
object.- Since:
- 0.3.0
- See:
Example
function Foo() { this.a = 1; this.b = 2; } Foo.prototype.c = 3; _.forIn(new Foo, function(value, key) { console.log(key); }); // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). -
static forInRight(object, iterateeopt) → {Object}
-
This method is like
_.forInexcept that it iterates over properties of
objectin the opposite order.Parameters:
Name Type Attributes Default Description objectObject The object to iterate over.
iterateefunction <optional>
_.identity The function invoked per iteration.
Returns:
Object -Returns
object.- Since:
- 2.0.0
- See:
Example
function Foo() { this.a = 1; this.b = 2; } Foo.prototype.c = 3; _.forInRight(new Foo, function(value, key) { console.log(key); }); // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. -
static forOwn(object, iterateeopt) → {Object}
-
Iterates over own enumerable string keyed properties of an object and
invokesiterateefor each property. The iteratee is invoked with three
arguments: (value, key, object). Iteratee functions may exit iteration
early by explicitly returningfalse.Parameters:
Name Type Attributes Default Description objectObject The object to iterate over.
iterateefunction <optional>
_.identity The function invoked per iteration.
Returns:
Object -Returns
object.- Since:
- 0.3.0
- See:
Example
function Foo() { this.a = 1; this.b = 2; } Foo.prototype.c = 3; _.forOwn(new Foo, function(value, key) { console.log(key); }); // => Logs 'a' then 'b' (iteration order is not guaranteed). -
static forOwnRight(object, iterateeopt) → {Object}
-
This method is like
_.forOwnexcept that it iterates over properties of
objectin the opposite order.Parameters:
Name Type Attributes Default Description objectObject The object to iterate over.
iterateefunction <optional>
_.identity The function invoked per iteration.
Returns:
Object -Returns
object.- Since:
- 2.0.0
- See:
Example
function Foo() { this.a = 1; this.b = 2; } Foo.prototype.c = 3; _.forOwnRight(new Foo, function(value, key) { console.log(key); }); // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. -
static fromPairs(pairs) → {Object}
-
The inverse of
_.toPairs; this method returns an object composed
from key-valuepairs.Parameters:
Name Type Description pairsArray The key-value pairs.
Returns:
Object -Returns the new object.
- Since:
- 4.0.0
Example
_.fromPairs([['a', 1], ['b', 2]]); // => { 'a': 1, 'b': 2 } -
static functions(object) → {Array}
-
Creates an array of function property names from own enumerable properties
ofobject.Parameters:
Name Type Description objectObject The object to inspect.
Returns:
Array -Returns the function names.
- Since:
- 0.1.0
- See:
Example
function Foo() { this.a = _.constant('a'); this.b = _.constant('b'); } Foo.prototype.c = _.constant('c'); _.functions(new Foo); // => ['a', 'b'] -
static functionsIn(object) → {Array}
-
Creates an array of function property names from own and inherited
enumerable properties ofobject.Parameters:
Name Type Description objectObject The object to inspect.
Returns:
Array -Returns the function names.
- Since:
- 4.0.0
- See:
Example
function Foo() { this.a = _.constant('a'); this.b = _.constant('b'); } Foo.prototype.c = _.constant('c'); _.functionsIn(new Foo); // => ['a', 'b', 'c'] -
static get(object, path, defaultValueopt) → {*}
-
Gets the value at
pathofobject. If the resolved value is
undefined, thedefaultValueis returned in its place.Parameters:
Name Type Attributes Description objectObject The object to query.
pathArray | string The path of the property to get.
defaultValue* <optional>
The value returned for
undefinedresolved values.Returns:
* -Returns the resolved value.
- Since:
- 3.7.0
Example
var object = { 'a': [{ 'b': { 'c': 3 } }] }; _.get(object, 'a[0].b.c'); // => 3 _.get(object, ['a', '0', 'b', 'c']); // => 3 _.get(object, 'a.b.c', 'default'); // => 'default' -
static has(object, path) → {boolean}
-
Checks if
pathis a direct property ofobject.Parameters:
Name Type Description objectObject The object to query.
pathArray | string The path to check.
Returns:
boolean -Returns
trueifpathexists, elsefalse.- Since:
- 0.1.0
Example
var object = { 'a': { 'b': 2 } }; var other = _.create({ 'a': _.create({ 'b': 2 }) }); _.has(object, 'a'); // => true _.has(object, 'a.b'); // => true _.has(object, ['a', 'b']); // => true _.has(other, 'a'); // => false -
static hasIn(object, path) → {boolean}
-
Checks if
pathis a direct or inherited property ofobject.Parameters:
Name Type Description objectObject The object to query.
pathArray | string The path to check.
Returns:
boolean -Returns
trueifpathexists, elsefalse.- Since:
- 4.0.0
Example
var object = _.create({ 'a': _.create({ 'b': 2 }) }); _.hasIn(object, 'a'); // => true _.hasIn(object, 'a.b'); // => true _.hasIn(object, ['a', 'b']); // => true _.hasIn(object, 'b'); // => false -
static identity(value) → {*}
-
This method returns the first argument it receives.
Parameters:
Name Type Description value* Any value.
Returns:
* -Returns
value.- Since:
- 0.1.0
Example
var object = { 'a': 1 }; console.log(_.identity(object) === object); // => true -
static inRange(number, startopt, end) → {boolean}
-
Checks if
nis betweenstartand up to, but not including,end. If
endis not specified, it's set tostartwithstartthen set to0.
Ifstartis greater thanendthe params are swapped to support
negative ranges.Parameters:
Name Type Attributes Default Description numbernumber The number to check.
startnumber <optional>
0 The start of the range.
endnumber The end of the range.
Returns:
boolean -Returns
trueifnumberis in the range, elsefalse.- Since:
- 3.3.0
- See:
-
- _.range, _.rangeRight
Example
_.inRange(3, 2, 4); // => true _.inRange(4, 8); // => true _.inRange(4, 2); // => false _.inRange(2, 2); // => false _.inRange(1.2, 2); // => true _.inRange(5.2, 4); // => false _.inRange(-3, -2, -6); // => true -
static includes(collection, value, fromIndexopt) → {boolean}
-
Checks if
valueis incollection. Ifcollectionis a string, it's
checked for a substring ofvalue, otherwise
SameValueZero
is used for equality comparisons. IffromIndexis negative, it's used as
the offset from the end ofcollection.Parameters:
Name Type Attributes Default Description collectionArray | Object | string The collection to inspect.
value* The value to search for.
fromIndexnumber <optional>
0 The index to search from.
Returns:
boolean -Returns
trueifvalueis found, elsefalse.- Since:
- 0.1.0
Example
_.includes([1, 2, 3], 1); // => true _.includes([1, 2, 3], 1, 2); // => false _.includes({ 'a': 1, 'b': 2 }, 1); // => true _.includes('abcd', 'bc'); // => true -
static indexOf(array, value, fromIndexopt) → {number}
-
Gets the index at which the first occurrence of
valueis found inarray
usingSameValueZero
for equality comparisons. IffromIndexis negative, it's used as the
offset from the end ofarray.Parameters:
Name Type Attributes Default Description arrayArray The array to inspect.
value* The value to search for.
fromIndexnumber <optional>
0 The index to search from.
Returns:
number -Returns the index of the matched value, else
-1.- Since:
- 0.1.0
Example
_.indexOf([1, 2, 1, 2], 2); // => 1 // Search from the `fromIndex`. _.indexOf([1, 2, 1, 2], 2, 2); // => 3 -
static initial(array) → {Array}
-
Gets all but the last element of
array.Parameters:
Name Type Description arrayArray The array to query.
Returns:
Array -Returns the slice of
array.- Since:
- 0.1.0
Example
_.initial([1, 2, 3]); // => [1, 2] -
static isArrayLike(value) → {boolean}
-
Checks if
valueis array-like. A value is considered array-like if it's
not a function and has avalue.lengththat's an integer greater than or
equal to0and less than or equal toNumber.MAX_SAFE_INTEGER.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis array-like, elsefalse.- Since:
- 4.0.0
Example
_.isArrayLike([1, 2, 3]); // => true _.isArrayLike(document.body.children); // => true _.isArrayLike('abc'); // => true _.isArrayLike(_.noop); // => false -
static isArrayLikeObject(value) → {boolean}
-
This method is like
_.isArrayLikeexcept that it also checks ifvalue
is an object.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis an array-like object,
elsefalse.- Since:
- 4.0.0
Example
_.isArrayLikeObject([1, 2, 3]); // => true _.isArrayLikeObject(document.body.children); // => true _.isArrayLikeObject('abc'); // => false _.isArrayLikeObject(_.noop); // => false -
static isBoolean(value) → {boolean}
-
Checks if
valueis classified as a boolean primitive or object.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis a boolean, elsefalse.- Since:
- 0.1.0
Example
_.isBoolean(false); // => true _.isBoolean(null); // => false -
static isElement(value) → {boolean}
-
Checks if
valueis likely a DOM element.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis a DOM element, elsefalse.- Since:
- 0.1.0
Example
_.isElement(document.body); // => true _.isElement('<body>'); // => false -
static isEmpty(value) → {boolean}
-
Checks if
valueis an empty object, collection, map, or set.Objects are considered empty if they have no own enumerable string keyed
properties.Array-like values such as
argumentsobjects, arrays, buffers, strings, or
jQuery-like collections are considered empty if they have alengthof0.
Similarly, maps and sets are considered empty if they have asizeof0.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis empty, elsefalse.- Since:
- 0.1.0
Example
_.isEmpty(null); // => true _.isEmpty(true); // => true _.isEmpty(1); // => true _.isEmpty([1, 2, 3]); // => false _.isEmpty({ 'a': 1 }); // => false -
static isEqual(value, other) → {boolean}
-
Performs a deep comparison between two values to determine if they are
equivalent.Note: This method supports comparing arrays, array buffers, booleans,
date objects, error objects, maps, numbers,Objectobjects, regexes,
sets, strings, symbols, and typed arrays.Objectobjects are compared
by their own, not inherited, enumerable properties. Functions and DOM
nodes are compared by strict equality, i.e.===.Parameters:
Name Type Description value* The value to compare.
other* The other value to compare.
Returns:
boolean -Returns
trueif the values are equivalent, elsefalse.- Since:
- 0.1.0
Example
var object = { 'a': 1 }; var other = { 'a': 1 }; _.isEqual(object, other); // => true object === other; // => false -
static isEqualWith(value, other, customizeropt) → {boolean}
-
This method is like
_.isEqualexcept that it acceptscustomizerwhich
is invoked to compare values. Ifcustomizerreturnsundefined, comparisons
are handled by the method instead. Thecustomizeris invoked with up to
six arguments: (objValue, othValue [, index|key, object, other, stack]).Parameters:
Name Type Attributes Description value* The value to compare.
other* The other value to compare.
customizerfunction <optional>
The function to customize comparisons.
Returns:
boolean -Returns
trueif the values are equivalent, elsefalse.- Since:
- 4.0.0
Example
function isGreeting(value) { return /^h(?:i|ello)$/.test(value); } function customizer(objValue, othValue) { if (isGreeting(objValue) && isGreeting(othValue)) { return true; } } var array = ['hello', 'goodbye']; var other = ['hi', 'goodbye']; _.isEqualWith(array, other, customizer); // => true -
static isError(value) → {boolean}
-
Checks if
valueis anError,EvalError,RangeError,ReferenceError,
SyntaxError,TypeError, orURIErrorobject.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis an error object, elsefalse.- Since:
- 3.0.0
Example
_.isError(new Error); // => true _.isError(Error); // => false -
static isFinite(value) → {boolean}
-
Checks if
valueis a finite primitive number.Note: This method is based on
Number.isFinite.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis a finite number, elsefalse.- Since:
- 0.1.0
Example
_.isFinite(3); // => true _.isFinite(Number.MIN_VALUE); // => true _.isFinite(Infinity); // => false _.isFinite('3'); // => false -
static isFunction(value) → {boolean}
-
Checks if
valueis classified as aFunctionobject.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis a function, elsefalse.- Since:
- 0.1.0
Example
_.isFunction(_); // => true _.isFunction(/abc/); // => false -
static isInteger(value) → {boolean}
-
Checks if
valueis an integer.Note: This method is based on
Number.isInteger.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis an integer, elsefalse.- Since:
- 4.0.0
Example
_.isInteger(3); // => true _.isInteger(Number.MIN_VALUE); // => false _.isInteger(Infinity); // => false _.isInteger('3'); // => false -
static isLength(value) → {boolean}
-
Checks if
valueis a valid array-like length.Note: This method is loosely based on
ToLength.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis a valid length, elsefalse.- Since:
- 4.0.0
Example
_.isLength(3); // => true _.isLength(Number.MIN_VALUE); // => false _.isLength(Infinity); // => false _.isLength('3'); // => false -
static isMatch(object, source) → {boolean}
-
Performs a partial deep comparison between
objectandsourceto
determine ifobjectcontains equivalent property values.Note: This method is equivalent to
_.matcheswhensourceis
partially applied.Partial comparisons will match empty array and empty object
source
values against any array or object value, respectively. See_.isEqual
for a list of supported value comparisons.Parameters:
Name Type Description objectObject The object to inspect.
sourceObject The object of property values to match.
Returns:
boolean -Returns
trueifobjectis a match, elsefalse.- Since:
- 3.0.0
Example
var object = { 'a': 1, 'b': 2 }; _.isMatch(object, { 'b': 2 }); // => true _.isMatch(object, { 'b': 1 }); // => false -
static isMatchWith(object, source, customizeropt) → {boolean}
-
This method is like
_.isMatchexcept that it acceptscustomizerwhich
is invoked to compare values. Ifcustomizerreturnsundefined, comparisons
are handled by the method instead. Thecustomizeris invoked with five
arguments: (objValue, srcValue, index|key, object, source).Parameters:
Name Type Attributes Description objectObject The object to inspect.
sourceObject The object of property values to match.
customizerfunction <optional>
The function to customize comparisons.
Returns:
boolean -Returns
trueifobjectis a match, elsefalse.- Since:
- 4.0.0
Example
function isGreeting(value) { return /^h(?:i|ello)$/.test(value); } function customizer(objValue, srcValue) { if (isGreeting(objValue) && isGreeting(srcValue)) { return true; } } var object = { 'greeting': 'hello' }; var source = { 'greeting': 'hi' }; _.isMatchWith(object, source, customizer); // => true -
static isNaN(value) → {boolean}
-
Checks if
valueisNaN.Note: This method is based on
Number.isNaNand is not the same as
globalisNaNwhich returnstruefor
undefinedand other non-number values.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueisNaN, elsefalse.- Since:
- 0.1.0
Example
_.isNaN(NaN); // => true _.isNaN(new Number(NaN)); // => true isNaN(undefined); // => true _.isNaN(undefined); // => false -
static isNative(value) → {boolean}
-
Checks if
valueis a pristine native function.Note: This method can't reliably detect native functions in the presence
of the core-js package because core-js circumvents this kind of detection.
Despite multiple requests, the core-js maintainer has made it clear: any
attempt to fix the detection will be obstructed. As a result, we're left
with little choice but to throw an error. Unfortunately, this also affects
packages, like babel-polyfill,
which rely on core-js.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis a native function,
elsefalse.- Since:
- 3.0.0
Example
_.isNative(Array.prototype.push); // => true _.isNative(_); // => false -
static isNil(value) → {boolean}
-
Checks if
valueisnullorundefined.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis nullish, elsefalse.- Since:
- 4.0.0
Example
_.isNil(null); // => true _.isNil(void 0); // => true _.isNil(NaN); // => false -
static isNull(value) → {boolean}
-
Checks if
valueisnull.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueisnull, elsefalse.- Since:
- 0.1.0
Example
_.isNull(null); // => true _.isNull(void 0); // => false -
static isNumber(value) → {boolean}
-
Checks if
valueis classified as aNumberprimitive or object.Note: To exclude
Infinity,-Infinity, andNaN, which are
classified as numbers, use the_.isFinitemethod.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis a number, elsefalse.- Since:
- 0.1.0
Example
_.isNumber(3); // => true _.isNumber(Number.MIN_VALUE); // => true _.isNumber(Infinity); // => true _.isNumber('3'); // => false -
static isObject(value) → {boolean}
-
Checks if
valueis the
language type
ofObject. (e.g. arrays, functions, objects, regexes,new Number(0), andnew String(''))Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis an object, elsefalse.- Since:
- 0.1.0
Example
_.isObject({}); // => true _.isObject([1, 2, 3]); // => true _.isObject(_.noop); // => true _.isObject(null); // => false -
static isObjectLike(value) → {boolean}
-
Checks if
valueis object-like. A value is object-like if it's notnull
and has atypeofresult of "object".Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis object-like, elsefalse.- Since:
- 4.0.0
Example
_.isObjectLike({}); // => true _.isObjectLike([1, 2, 3]); // => true _.isObjectLike(_.noop); // => false _.isObjectLike(null); // => false -
static isPlainObject(value) → {boolean}
-
Checks if
valueis a plain object, that is, an object created by the
Objectconstructor or one with a[[Prototype]]ofnull.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis a plain object, elsefalse.- Since:
- 0.8.0
Example
function Foo() { this.a = 1; } _.isPlainObject(new Foo); // => false _.isPlainObject([1, 2, 3]); // => false _.isPlainObject({ 'x': 0, 'y': 0 }); // => true _.isPlainObject(Object.create(null)); // => true -
static isSafeInteger(value) → {boolean}
-
Checks if
valueis a safe integer. An integer is safe if it's an IEEE-754
double precision number which isn't the result of a rounded unsafe integer.Note: This method is based on
Number.isSafeInteger.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis a safe integer, elsefalse.- Since:
- 4.0.0
Example
_.isSafeInteger(3); // => true _.isSafeInteger(Number.MIN_VALUE); // => false _.isSafeInteger(Infinity); // => false _.isSafeInteger('3'); // => false -
static isString(value) → {boolean}
-
Checks if
valueis classified as aStringprimitive or object.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis a string, elsefalse.- Since:
- 0.1.0
Example
_.isString('abc'); // => true _.isString(1); // => false -
static isSymbol(value) → {boolean}
-
Checks if
valueis classified as aSymbolprimitive or object.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis a symbol, elsefalse.- Since:
- 4.0.0
Example
_.isSymbol(Symbol.iterator); // => true _.isSymbol('abc'); // => false -
static isUndefined(value) → {boolean}
-
Checks if
valueisundefined.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueisundefined, elsefalse.- Since:
- 0.1.0
Example
_.isUndefined(void 0); // => true _.isUndefined(null); // => false -
static isWeakMap(value) → {boolean}
-
Checks if
valueis classified as aWeakMapobject.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis a weak map, elsefalse.- Since:
- 4.3.0
Example
_.isWeakMap(new WeakMap); // => true _.isWeakMap(new Map); // => false -
static isWeakSet(value) → {boolean}
-
Checks if
valueis classified as aWeakSetobject.Parameters:
Name Type Description value* The value to check.
Returns:
boolean -Returns
trueifvalueis a weak set, elsefalse.- Since:
- 4.3.0
Example
_.isWeakSet(new WeakSet); // => true _.isWeakSet(new Set); // => false -
static iteratee(funcopt) → {function}
-
Creates a function that invokes
funcwith the arguments of the created
function. Iffuncis a property name, the created function returns the
property value for a given element. Iffuncis an array or object, the
created function returnstruefor elements that contain the equivalent
source properties, otherwise it returnsfalse.Parameters:
Name Type Attributes Default Description func* <optional>
_.identity The value to convert to a callback.
Returns:
function -Returns the callback.
- Since:
- 4.0.0
Example
var users = [ { 'user': 'barney', 'age': 36, 'active': true }, { 'user': 'fred', 'age': 40, 'active': false } ]; // The `_.matches` iteratee shorthand. _.filter(users, _.iteratee({ 'user': 'barney', 'active': true })); // => [{ 'user': 'barney', 'age': 36, 'active': true }] // The `_.matchesProperty` iteratee shorthand. _.filter(users, _.iteratee(['user', 'fred'])); // => [{ 'user': 'fred', 'age': 40 }] // The `_.property` iteratee shorthand. _.map(users, _.iteratee('user')); // => ['barney', 'fred'] // Create custom iteratee shorthands. _.iteratee = _.wrap(_.iteratee, function(iteratee, func) { return !_.isRegExp(func) ? iteratee(func) : function(string) { return func.test(string); }; }); _.filter(['abc', 'def'], /ef/); // => ['def'] -
static join(array, separatoropt) → {string}
-
Converts all elements in
arrayinto a string separated byseparator.Parameters:
Name Type Attributes Default Description arrayArray The array to convert.
separatorstring <optional>
',' The element separator.
Returns:
string -Returns the joined string.
- Since:
- 4.0.0
Example
_.join(['a', 'b', 'c'], '~'); // => 'a~b~c' -
static keys(object) → {Array}
-
Creates an array of the own enumerable property names of
object.Note: Non-object values are coerced to objects. See the
ES spec
for more details.Parameters:
Name Type Description objectObject The object to query.
Returns:
Array -Returns the array of property names.
- Since:
- 0.1.0
Example
function Foo() { this.a = 1; this.b = 2; } Foo.prototype.c = 3; _.keys(new Foo); // => ['a', 'b'] (iteration order is not guaranteed) _.keys('hi'); // => ['0', '1'] -
static keysIn(object) → {Array}
-
Creates an array of the own and inherited enumerable property names of
object.Note: Non-object values are coerced to objects.
Parameters:
Name Type Description objectObject The object to query.
Returns:
Array -Returns the array of property names.
- Since:
- 3.0.0
Example
function Foo() { this.a = 1; this.b = 2; } Foo.prototype.c = 3; _.keysIn(new Foo); // => ['a', 'b', 'c'] (iteration order is not guaranteed) -
static last(array) → {*}
-
Gets the last element of
array.Parameters:
Name Type Description arrayArray The array to query.
Returns:
* -Returns the last element of
array.- Since:
- 0.1.0
Example
_.last([1, 2, 3]); // => 3 -
static lastIndexOf(array, value, fromIndexopt) → {number}
-
This method is like
_.indexOfexcept that it iterates over elements of
arrayfrom right to left.Parameters:
Name Type Attributes Default Description arrayArray The array to inspect.
value* The value to search for.
fromIndexnumber <optional>
array.length-1 The index to search from.
Returns:
number -Returns the index of the matched value, else
-1.- Since:
- 0.1.0
Example
_.lastIndexOf([1, 2, 1, 2], 2); // => 3 // Search from the `fromIndex`. _.lastIndexOf([1, 2, 1, 2], 2, 2); // => 1 -
static map(collection, iterateeopt) → {Array}
-
Creates an array of values by running each element in
collectionthru
iteratee. The iteratee is invoked with three arguments:
(value, index|key, collection).Many lodash methods are guarded to work as iteratees for methods like
_.every,_.filter,_.map,_.mapValues,_.reject, and_.some.The guarded methods are:
ary,chunk,curry,curryRight,drop,dropRight,every,
fill,invert,parseInt,random,range,rangeRight,repeat,
sampleSize,slice,some,sortBy,split,take,takeRight,
template,trim,trimEnd,trimStart, andwordsParameters:
Name Type Attributes Default Description collectionArray | Object The collection to iterate over.
iterateefunction <optional>
_.identity The function invoked per iteration.
Returns:
Array -Returns the new mapped array.
- Since:
- 0.1.0
Example
function square(n) { return n * n; } _.map([4, 8], square); // => [16, 64] _.map({ 'a': 4, 'b': 8 }, square); // => [16, 64] (iteration order is not guaranteed) var users = [ { 'user': 'barney' }, { 'user': 'fred' } ]; // The `_.property` iteratee shorthand. _.map(users, 'user'); // => ['barney', 'fred'] -
static mapKeys(object, iterateeopt) → {Object}
-
The opposite of
_.mapValues; this method creates an object with the
same values asobjectand keys generated by running each own enumerable
string keyed property ofobjectthruiteratee. The iteratee is invoked
with three arguments: (value, key, object).Parameters:
Name Type Attributes Default Description objectObject The object to iterate over.
iterateefunction <optional>
_.identity The function invoked per iteration.
Returns:
Object -Returns the new mapped object.
- Since:
- 3.8.0
- See:
Example
_.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { return key + value; }); // => { 'a1': 1, 'b2': 2 } -
static mapValues(object, iterateeopt) → {Object}
-
Creates an object with the same keys as
objectand values generated
by running each own enumerable string keyed property ofobjectthru
iteratee. The iteratee is invoked with three arguments:
(value, key, object).Parameters:
Name Type Attributes Default Description objectObject The object to iterate over.
iterateefunction <optional>
_.identity The function invoked per iteration.
Returns:
Object -Returns the new mapped object.
- Since:
- 2.4.0
- See:
Example
var users = { 'fred': { 'user': 'fred', 'age': 40 }, 'pebbles': { 'user': 'pebbles', 'age': 1 } }; _.mapValues(users, function(o) { return o.age; }); // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) // The `_.property` iteratee shorthand. _.mapValues(users, 'age'); // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) -
static matches(source) → {function}
-
Creates a function that performs a partial deep comparison between a given
object andsource, returningtrueif the given object has equivalent
property values, elsefalse.Note: The created function is equivalent to
_.isMatchwithsource
partially applied.Partial comparisons will match empty array and empty object
source
values against any array or object value, respectively. See_.isEqual
for a list of supported value comparisons.Parameters:
Name Type Description sourceObject The object of property values to match.
Returns:
function -Returns the new spec function.
- Since:
- 3.0.0
Example
var objects = [ { 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 } ]; _.filter(objects, _.matches({ 'a': 4, 'c': 6 })); // => [{ 'a': 4, 'b': 5, 'c': 6 }] -
static matchesProperty(path, srcValue) → {function}
-
Creates a function that performs a partial deep comparison between the
value atpathof a given object tosrcValue, returningtrueif the
object value is equivalent, elsefalse.Note: Partial comparisons will match empty array and empty object
srcValuevalues against any array or object value, respectively. See
_.isEqualfor a list of supported value comparisons.Parameters:
Name Type Description pathArray | string The path of the property to get.
srcValue* The value to match.
Returns:
function -Returns the new spec function.
- Since:
- 3.2.0
Example
var objects = [ { 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 } ]; _.find(objects, _.matchesProperty('a', 4)); // => { 'a': 4, 'b': 5, 'c': 6 } -
static max(array) → {*}
-
Computes the maximum value of
array. Ifarrayis empty or falsey,
undefinedis returned.Parameters:
Name Type Description arrayArray The array to iterate over.
Returns:
* -Returns the maximum value.
- Since:
- 0.1.0
Example
_.max([4, 2, 8, 6]); // => 8 _.max([]); // => undefined -
static maxBy(array, iterateeopt) → {*}
-
This method is like
_.maxexcept that it acceptsiterateewhich is
invoked for each element inarrayto generate the criterion by which
the value is ranked. The iteratee is invoked with one argument: (value).Parameters:
Name Type Attributes Default Description arrayArray The array to iterate over.
iterateefunction <optional>
_.identity The iteratee invoked per element.
Returns:
* -Returns the maximum value.
- Since:
- 4.0.0
Example
var objects = [{ 'n': 1 }, { 'n': 2 }]; _.maxBy(objects, function(o) { return o.n; }); // => { 'n': 2 } // The `_.property` iteratee shorthand. _.maxBy(objects, 'n'); // => { 'n': 2 } -
static mean(array) → {number}
-
Computes the mean of the values in
array.Parameters:
Name Type Description arrayArray The array to iterate over.
Returns:
number -Returns the mean.
- Since:
- 4.0.0
Example
_.mean([4, 2, 8, 6]); // => 5 -
static meanBy(array, iterateeopt) → {number}
-
This method is like
_.meanexcept that it acceptsiterateewhich is
invoked for each element inarrayto generate the value to be averaged.
The iteratee is invoked with one argument: (value).Parameters:
Name Type Attributes Default Description arrayArray The array to iterate over.
iterateefunction <optional>
_.identity The iteratee invoked per element.
Returns:
number -Returns the mean.
- Since:
- 4.7.0
Example
var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; _.meanBy(objects, function(o) { return o.n; }); // => 5 // The `_.property` iteratee shorthand. _.meanBy(objects, 'n'); // => 5 -
static memoize(func, resolveropt) → {function}
-
Creates a function that memoizes the result of
func. Ifresolveris
provided, it determines the cache key for storing the result based on the
arguments provided to the memoized function. By default, the first argument
provided to the memoized function is used as the map cache key. Thefunc
is invoked with thethisbinding of the memoized function.Note: The cache is exposed as the
cacheproperty on the memoized
function. Its creation may be customized by replacing the_.memoize.Cache
constructor with one whose instances implement the
Map
method interface ofclear,delete,get,has, andset.Parameters:
Name Type Attributes Description funcfunction The function to have its output memoized.
resolverfunction <optional>
The function to resolve the cache key.
Returns:
function -Returns the new memoized function.
- Since:
- 0.1.0
Example
var object = { 'a': 1, 'b': 2 }; var other = { 'c': 3, 'd': 4 }; var values = _.memoize(_.values); values(object); // => [1, 2] values(other); // => [3, 4] object.a = 2; values(object); // => [1, 2] // Modify the result cache. values.cache.set(object, ['a', 'b']); values(object); // => ['a', 'b'] // Replace `_.memoize.Cache`. _.memoize.Cache = WeakMap; -
static min(array) → {*}
-
Computes the minimum value of
array. Ifarrayis empty or falsey,
undefinedis returned.Parameters:
Name Type Description arrayArray The array to iterate over.
Returns:
* -Returns the minimum value.
- Since:
- 0.1.0
Example
_.min([4, 2, 8, 6]); // => 2 _.min([]); // => undefined -
static minBy(array, iterateeopt) → {*}
-
This method is like
_.minexcept that it acceptsiterateewhich is
invoked for each element inarrayto generate the criterion by which
the value is ranked. The iteratee is invoked with one argument: (value).Parameters:
Name Type Attributes Default Description arrayArray The array to iterate over.
iterateefunction <optional>
_.identity The iteratee invoked per element.
Returns:
* -Returns the minimum value.
- Since:
- 4.0.0
Example
var objects = [{ 'n': 1 }, { 'n': 2 }]; _.minBy(objects, function(o) { return o.n; }); // => { 'n': 1 } // The `_.property` iteratee shorthand. _.minBy(objects, 'n'); // => { 'n': 1 } -
static mixin(objectopt, source, optionsopt) → {function|Object}
-
Adds all own enumerable string keyed function properties of a source
object to the destination object. Ifobjectis a function, then methods
are added to its prototype as well.Note: Use
_.runInContextto create a pristinelodashfunction to
avoid conflicts caused by modifying the original.Parameters:
Name Type Attributes Default Description objectfunction | Object <optional>
lodash The destination object.
sourceObject The object of functions to add.
optionsObject <optional>
{} The options object.
Properties
Name Type Attributes Default Description chainboolean <optional>
true Specify whether mixins are chainable.
Returns:
function | Object -Returns
object.- Since:
- 0.1.0
Example
function vowels(string) { return _.filter(string, function(v) { return /[aeiou]/i.test(v); }); } _.mixin({ 'vowels': vowels }); _.vowels('fred'); // => ['e'] _('fred').vowels().value(); // => ['e'] _.mixin({ 'vowels': vowels }, { 'chain': false }); _('fred').vowels(); // => ['e'] -
static negate(predicate) → {function}
-
Creates a function that negates the result of the predicate
func. The
funcpredicate is invoked with thethisbinding and arguments of the
created function.Parameters:
Name Type Description predicatefunction The predicate to negate.
Returns:
function -Returns the new negated function.
- Since:
- 3.0.0
Example
function isEven(n) { return n % 2 == 0; } _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); // => [1, 3, 5] -
static noConflict() → {function}
-
Reverts the
_variable to its previous value and returns a reference to
thelodashfunction.Returns:
function -Returns the
lodashfunction.- Since:
- 0.1.0
Example
var lodash = _.noConflict(); -
static noop()
-
This method returns
undefined.- Since:
- 2.3.0
Example
_.times(2, _.noop); // => [undefined, undefined] -
static nth(array, nopt) → {*}
-
Gets the element at index
nofarray. Ifnis negative, the nth
element from the end is returned.Parameters:
Name Type Attributes Default Description arrayArray The array to query.
nnumber <optional>
0 The index of the element to return.
Returns:
* -Returns the nth element of
array.- Since:
- 4.11.0
Example
var array = ['a', 'b', 'c', 'd']; _.nth(array, 1); // => 'b' _.nth(array, -2); // => 'c'; -
static nthArg(nopt) → {function}
-
Creates a function that gets the argument at index
n. Ifnis negative,
the nth argument from the end is returned.Parameters:
Name Type Attributes Default Description nnumber <optional>
0 The index of the argument to return.
Returns:
function -Returns the new pass-thru function.
- Since:
- 4.0.0
Example
var func = _.nthArg(1); func('a', 'b', 'c', 'd'); // => 'b' var func = _.nthArg(-2); func('a', 'b', 'c', 'd'); // => 'c' -
static omitBy(object, predicateopt) → {Object}
-
The opposite of
_.pickBy; this method creates an object composed of
the own and inherited enumerable string keyed properties ofobjectthat
predicatedoesn't return truthy for. The predicate is invoked with two
arguments: (value, key).Parameters:
Name Type Attributes Default Description objectObject The source object.
predicatefunction <optional>
_.identity The function invoked per property.
Returns:
Object -Returns the new object.
- Since:
- 4.0.0
Example
var object = { 'a': 1, 'b': '2', 'c': 3 }; _.omitBy(object, _.isNumber); // => { 'b': '2' } -
static once(func) → {function}
-
Creates a function that is restricted to invoking
funconce. Repeat calls
to the function return the value of the first invocation. Thefuncis
invoked with thethisbinding and arguments of the created function.Parameters:
Name Type Description funcfunction The function to restrict.
Returns:
function -Returns the new restricted function.
- Since:
- 0.1.0
Example
var initialize = _.once(createApplication); initialize(); initialize(); // => `createApplication` is invoked once -
static orderBy(collection, iterateesopt, ordersopt) → {Array}
-
This method is like
_.sortByexcept that it allows specifying the sort
orders of the iteratees to sort by. Ifordersis unspecified, all values
are sorted in ascending order. Otherwise, specify an order of "desc" for
descending or "asc" for ascending sort order of corresponding values.Parameters:
Name Type Attributes Default Description collectionArray | Object The collection to iterate over.
iterateesArray.<Array> | Array.<function()> | Array.<Object> | Array.<string> <optional>
[_.identity] The iteratees to sort by.
ordersArray.<string> <optional>
The sort orders of
iteratees.Returns:
Array -Returns the new sorted array.
- Since:
- 4.0.0
Example
var users = [ { 'user': 'fred', 'age': 48 }, { 'user': 'barney', 'age': 34 }, { 'user': 'fred', 'age': 40 }, { 'user': 'barney', 'age': 36 } ]; // Sort by `user` in ascending order and by `age` in descending order. _.orderBy(users, ['user', 'age'], ['asc', 'desc']); // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] -
static pad(stringopt, lengthopt, charsopt) → {string}
-
Pads
stringon the left and right sides if it's shorter thanlength.
Padding characters are truncated if they can't be evenly divided bylength.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to pad.
lengthnumber <optional>
0 The padding length.
charsstring <optional>
' ' The string used as padding.
Returns:
string -Returns the padded string.
- Since:
- 3.0.0
Example
_.pad('abc', 8); // => ' abc ' _.pad('abc', 8, '_-'); // => '_-abc_-_' _.pad('abc', 3); // => 'abc' -
static padEnd(stringopt, lengthopt, charsopt) → {string}
-
Pads
stringon the right side if it's shorter thanlength. Padding
characters are truncated if they exceedlength.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to pad.
lengthnumber <optional>
0 The padding length.
charsstring <optional>
' ' The string used as padding.
Returns:
string -Returns the padded string.
- Since:
- 4.0.0
Example
_.padEnd('abc', 6); // => 'abc ' _.padEnd('abc', 6, '_-'); // => 'abc_-_' _.padEnd('abc', 3); // => 'abc' -
static padStart(stringopt, lengthopt, charsopt) → {string}
-
Pads
stringon the left side if it's shorter thanlength. Padding
characters are truncated if they exceedlength.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to pad.
lengthnumber <optional>
0 The padding length.
charsstring <optional>
' ' The string used as padding.
Returns:
string -Returns the padded string.
- Since:
- 4.0.0
Example
_.padStart('abc', 6); // => ' abc' _.padStart('abc', 6, '_-'); // => '_-_abc' _.padStart('abc', 3); // => 'abc' -
static parseInt(string, radixopt) → {number}
-
Converts
stringto an integer of the specified radix. Ifradixis
undefinedor0, aradixof10is used unlessvalueis a
hexadecimal, in which case aradixof16is used.Note: This method aligns with the
ES5 implementation ofparseInt.Parameters:
Name Type Attributes Default Description stringstring The string to convert.
radixnumber <optional>
10 The radix to interpret
valueby.Returns:
number -Returns the converted integer.
- Since:
- 1.1.0
Example
_.parseInt('08'); // => 8 _.map(['6', '08', '10'], _.parseInt); // => [6, 8, 10] -
static pickBy(object, predicateopt) → {Object}
-
Creates an object composed of the
objectpropertiespredicatereturns
truthy for. The predicate is invoked with two arguments: (value, key).Parameters:
Name Type Attributes Default Description objectObject The source object.
predicatefunction <optional>
_.identity The function invoked per property.
Returns:
Object -Returns the new object.
- Since:
- 4.0.0
Example
var object = { 'a': 1, 'b': '2', 'c': 3 }; _.pickBy(object, _.isNumber); // => { 'a': 1, 'c': 3 } -
static property(path) → {function}
-
Creates a function that returns the value at
pathof a given object.Parameters:
Name Type Description pathArray | string The path of the property to get.
Returns:
function -Returns the new accessor function.
- Since:
- 2.4.0
Example
var objects = [ { 'a': { 'b': 2 } }, { 'a': { 'b': 1 } } ]; _.map(objects, _.property('a.b')); // => [2, 1] _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); // => [1, 2] -
static propertyOf(object) → {function}
-
The opposite of
_.property; this method creates a function that returns
the value at a given path ofobject.Parameters:
Name Type Description objectObject The object to query.
Returns:
function -Returns the new accessor function.
- Since:
- 3.0.0
Example
var array = [0, 1, 2], object = { 'a': array, 'b': array, 'c': array }; _.map(['a[2]', 'c[0]'], _.propertyOf(object)); // => [2, 0] _.map([['a', '2'], ['c', '0']], _.propertyOf(object)); // => [2, 0] -
static pullAll(array, values) → {Array}
-
This method is like
_.pullexcept that it accepts an array of values to remove.Note: Unlike
_.difference, this method mutatesarray.Parameters:
Name Type Description arrayArray The array to modify.
valuesArray The values to remove.
Returns:
Array -Returns
array.- Since:
- 4.0.0
Example
var array = ['a', 'b', 'c', 'a', 'b', 'c']; _.pullAll(array, ['a', 'c']); console.log(array); // => ['b', 'b'] -
static pullAllBy(array, values, iterateeopt) → {Array}
-
This method is like
_.pullAllexcept that it acceptsiterateewhich is
invoked for each element ofarrayandvaluesto generate the criterion
by which they're compared. The iteratee is invoked with one argument: (value).Note: Unlike
_.differenceBy, this method mutatesarray.Parameters:
Name Type Attributes Default Description arrayArray The array to modify.
valuesArray The values to remove.
iterateefunction <optional>
_.identity The iteratee invoked per element.
Returns:
Array -Returns
array.- Since:
- 4.0.0
Example
var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); console.log(array); // => [{ 'x': 2 }] -
static pullAllWith(array, values, comparatoropt) → {Array}
-
This method is like
_.pullAllexcept that it acceptscomparatorwhich
is invoked to compare elements ofarraytovalues. The comparator is
invoked with two arguments: (arrVal, othVal).Note: Unlike
_.differenceWith, this method mutatesarray.Parameters:
Name Type Attributes Description arrayArray The array to modify.
valuesArray The values to remove.
comparatorfunction <optional>
The comparator invoked per element.
Returns:
Array -Returns
array.- Since:
- 4.6.0
Example
var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); console.log(array); // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] -
static random(loweropt, upperopt, floatingopt) → {number}
-
Produces a random number between the inclusive
lowerandupperbounds.
If only one argument is provided a number between0and the given number
is returned. Iffloatingistrue, or eitherlowerorupperare
floats, a floating-point number is returned instead of an integer.Note: JavaScript follows the IEEE-754 standard for resolving
floating-point values which can produce unexpected results.Parameters:
Name Type Attributes Default Description lowernumber <optional>
0 The lower bound.
uppernumber <optional>
1 The upper bound.
floatingboolean <optional>
Specify returning a floating-point number.
Returns:
number -Returns the random number.
- Since:
- 0.7.0
Example
_.random(0, 5); // => an integer between 0 and 5 _.random(5); // => also an integer between 0 and 5 _.random(5, true); // => a floating-point number between 0 and 5 _.random(1.2, 5.2); // => a floating-point number between 1.2 and 5.2 -
static reduce(collection, iterateeopt, accumulatoropt) → {*}
-
Reduces
collectionto a value which is the accumulated result of running
each element incollectionthruiteratee, where each successive
invocation is supplied the return value of the previous. Ifaccumulator
is not given, the first element ofcollectionis used as the initial
value. The iteratee is invoked with four arguments:
(accumulator, value, index|key, collection).Many lodash methods are guarded to work as iteratees for methods like
_.reduce,_.reduceRight, and_.transform.The guarded methods are:
assign,defaults,defaultsDeep,includes,merge,orderBy,
andsortByParameters:
Name Type Attributes Default Description collectionArray | Object The collection to iterate over.
iterateefunction <optional>
_.identity The function invoked per iteration.
accumulator* <optional>
The initial value.
Returns:
* -Returns the accumulated value.
- Since:
- 0.1.0
- See:
Example
_.reduce([1, 2], function(sum, n) { return sum + n; }, 0); // => 3 _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { (result[value] || (result[value] = [])).push(key); return result; }, {}); // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) -
static reduceRight(collection, iterateeopt, accumulatoropt) → {*}
-
This method is like
_.reduceexcept that it iterates over elements of
collectionfrom right to left.Parameters:
Name Type Attributes Default Description collectionArray | Object The collection to iterate over.
iterateefunction <optional>
_.identity The function invoked per iteration.
accumulator* <optional>
The initial value.
Returns:
* -Returns the accumulated value.
- Since:
- 0.1.0
- See:
Example
var array = [[0, 1], [2, 3], [4, 5]]; _.reduceRight(array, function(flattened, other) { return flattened.concat(other); }, []); // => [4, 5, 2, 3, 0, 1] -
static reject(collection, predicateopt) → {Array}
-
The opposite of
_.filter; this method returns the elements ofcollection
thatpredicatedoes not return truthy for.Parameters:
Name Type Attributes Default Description collectionArray | Object The collection to iterate over.
predicatefunction <optional>
_.identity The function invoked per iteration.
Returns:
Array -Returns the new filtered array.
- Since:
- 0.1.0
- See:
Example
var users = [ { 'user': 'barney', 'age': 36, 'active': false }, { 'user': 'fred', 'age': 40, 'active': true } ]; _.reject(users, function(o) { return !o.active; }); // => objects for ['fred'] // The `_.matches` iteratee shorthand. _.reject(users, { 'age': 40, 'active': true }); // => objects for ['barney'] // The `_.matchesProperty` iteratee shorthand. _.reject(users, ['active', false]); // => objects for ['fred'] // The `_.property` iteratee shorthand. _.reject(users, 'active'); // => objects for ['barney'] -
static remove(array, predicateopt) → {Array}
-
Removes all elements from
arraythatpredicatereturns truthy for
and returns an array of the removed elements. The predicate is invoked
with three arguments: (value, index, array).Note: Unlike
_.filter, this method mutatesarray. Use_.pull
to pull elements from an array by value.Parameters:
Name Type Attributes Default Description arrayArray The array to modify.
predicatefunction <optional>
_.identity The function invoked per iteration.
Returns:
Array -Returns the new array of removed elements.
- Since:
- 2.0.0
Example
var array = [1, 2, 3, 4]; var evens = _.remove(array, function(n) { return n % 2 == 0; }); console.log(array); // => [1, 3] console.log(evens); // => [2, 4] -
static repeat(stringopt, nopt) → {string}
-
Repeats the given string
ntimes.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to repeat.
nnumber <optional>
1 The number of times to repeat the string.
Returns:
string -Returns the repeated string.
- Since:
- 3.0.0
Example
_.repeat('*', 3); // => '***' _.repeat('abc', 2); // => 'abcabc' _.repeat('abc', 0); // => '' -
static replace(stringopt, pattern, replacement) → {string}
-
Replaces matches for
patterninstringwithreplacement.Note: This method is based on
String#replace.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to modify.
patternRegExp | string The pattern to replace.
replacementfunction | string The match replacement.
Returns:
string -Returns the modified string.
- Since:
- 4.0.0
Example
_.replace('Hi Fred', 'Fred', 'Barney'); // => 'Hi Barney' -
static rest(func, startopt) → {function}
-
Creates a function that invokes
funcwith thethisbinding of the
created function and arguments fromstartand beyond provided as
an array.Note: This method is based on the
rest parameter.Parameters:
Name Type Attributes Default Description funcfunction The function to apply a rest parameter to.
startnumber <optional>
func.length-1 The start position of the rest parameter.
Returns:
function -Returns the new function.
- Since:
- 4.0.0
Example
var say = _.rest(function(what, names) { return what + ' ' + _.initial(names).join(', ') + (_.size(names) > 1 ? ', & ' : '') + _.last(names); }); say('hello', 'fred', 'barney', 'pebbles'); // => 'hello fred, barney, & pebbles' -
static result(object, path, defaultValueopt) → {*}
-
This method is like
_.getexcept that if the resolved value is a
function it's invoked with thethisbinding of its parent object and
its result is returned.Parameters:
Name Type Attributes Description objectObject The object to query.
pathArray | string The path of the property to resolve.
defaultValue* <optional>
The value returned for
undefinedresolved values.Returns:
* -Returns the resolved value.
- Since:
- 0.1.0
Example
var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; _.result(object, 'a[0].b.c1'); // => 3 _.result(object, 'a[0].b.c2'); // => 4 _.result(object, 'a[0].b.c3', 'default'); // => 'default' _.result(object, 'a[0].b.c3', _.constant('default')); // => 'default' -
static reverse(array) → {Array}
-
Reverses
arrayso that the first element becomes the last, the second
element becomes the second to last, and so on.Note: This method mutates
arrayand is based on
Array#reverse.Parameters:
Name Type Description arrayArray The array to modify.
Returns:
Array -Returns
array.- Since:
- 4.0.0
Example
var array = [1, 2, 3]; _.reverse(array); // => [3, 2, 1] console.log(array); // => [3, 2, 1] -
static runInContext(contextopt) → {function}
-
Create a new pristine
lodashfunction using thecontextobject.Parameters:
Name Type Attributes Default Description contextObject <optional>
root The context object.
Returns:
function -Returns a new
lodashfunction.- Since:
- 1.1.0
Example
_.mixin({ 'foo': _.constant('foo') }); var lodash = _.runInContext(); lodash.mixin({ 'bar': lodash.constant('bar') }); _.isFunction(_.foo); // => true _.isFunction(_.bar); // => false lodash.isFunction(lodash.foo); // => false lodash.isFunction(lodash.bar); // => true // Create a suped-up `defer` in Node.js. var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; -
static sample(collection) → {*}
-
Gets a random element from
collection.Parameters:
Name Type Description collectionArray | Object The collection to sample.
Returns:
* -Returns the random element.
- Since:
- 2.0.0
Example
_.sample([1, 2, 3, 4]); // => 2 -
static sampleSize(collection, nopt) → {Array}
-
Gets
nrandom elements at unique keys fromcollectionup to the
size ofcollection.Parameters:
Name Type Attributes Default Description collectionArray | Object The collection to sample.
nnumber <optional>
1 The number of elements to sample.
Returns:
Array -Returns the random elements.
- Since:
- 4.0.0
Example
_.sampleSize([1, 2, 3], 2); // => [3, 1] _.sampleSize([1, 2, 3], 4); // => [2, 3, 1] -
static set(object, path, value) → {Object}
-
Sets the value at
pathofobject. If a portion ofpathdoesn't exist,
it's created. Arrays are created for missing index properties while objects
are created for all other missing properties. Use_.setWithto customize
pathcreation.Note: This method mutates
object.Parameters:
Name Type Description objectObject The object to modify.
pathArray | string The path of the property to set.
value* The value to set.
Returns:
Object -Returns
object.- Since:
- 3.7.0
Example
var object = { 'a': [{ 'b': { 'c': 3 } }] }; _.set(object, 'a[0].b.c', 4); console.log(object.a[0].b.c); // => 4 _.set(object, ['x', '0', 'y', 'z'], 5); console.log(object.x[0].y.z); // => 5 -
static setWith(object, path, value, customizeropt) → {Object}
-
This method is like
_.setexcept that it acceptscustomizerwhich is
invoked to produce the objects ofpath. Ifcustomizerreturnsundefined
path creation is handled by the method instead. Thecustomizeris invoked
with three arguments: (nsValue, key, nsObject).Note: This method mutates
object.Parameters:
Name Type Attributes Description objectObject The object to modify.
pathArray | string The path of the property to set.
value* The value to set.
customizerfunction <optional>
The function to customize assigned values.
Returns:
Object -Returns
object.- Since:
- 4.0.0
Example
var object = {}; _.setWith(object, '[0][1]', 'a', Object); // => { '0': { '1': 'a' } } -
static shuffle(collection) → {Array}
-
Creates an array of shuffled values, using a version of the
Fisher-Yates shuffle.Parameters:
Name Type Description collectionArray | Object The collection to shuffle.
Returns:
Array -Returns the new shuffled array.
- Since:
- 0.1.0
Example
_.shuffle([1, 2, 3, 4]); // => [4, 1, 3, 2] -
static size(collection) → {number}
-
Gets the size of
collectionby returning its length for array-like
values or the number of own enumerable string keyed properties for objects.Parameters:
Name Type Description collectionArray | Object | string The collection to inspect.
Returns:
number -Returns the collection size.
- Since:
- 0.1.0
Example
_.size([1, 2, 3]); // => 3 _.size({ 'a': 1, 'b': 2 }); // => 2 _.size('pebbles'); // => 7 -
static slice(array, startopt, endopt) → {Array}
-
Creates a slice of
arrayfromstartup to, but not including,end.Note: This method is used instead of
Array#sliceto ensure dense arrays are
returned.Parameters:
Name Type Attributes Default Description arrayArray The array to slice.
startnumber <optional>
0 The start position.
endnumber <optional>
array.length The end position.
Returns:
Array -Returns the slice of
array.- Since:
- 3.0.0
-
static some(collection, predicateopt) → {boolean}
-
Checks if
predicatereturns truthy for any element ofcollection.
Iteration is stopped oncepredicatereturns truthy. The predicate is
invoked with three arguments: (value, index|key, collection).Parameters:
Name Type Attributes Default Description collectionArray | Object The collection to iterate over.
predicatefunction <optional>
_.identity The function invoked per iteration.
Returns:
boolean -Returns
trueif any element passes the predicate check,
elsefalse.- Since:
- 0.1.0
Example
_.some([null, 0, 'yes', false], Boolean); // => true var users = [ { 'user': 'barney', 'active': true }, { 'user': 'fred', 'active': false } ]; // The `_.matches` iteratee shorthand. _.some(users, { 'user': 'barney', 'active': false }); // => false // The `_.matchesProperty` iteratee shorthand. _.some(users, ['active', false]); // => true // The `_.property` iteratee shorthand. _.some(users, 'active'); // => true -
static sortedIndex(array, value) → {number}
-
Uses a binary search to determine the lowest index at which
value
should be inserted intoarrayin order to maintain its sort order.Parameters:
Name Type Description arrayArray The sorted array to inspect.
value* The value to evaluate.
Returns:
number -Returns the index at which
valueshould be inserted
intoarray.- Since:
- 0.1.0
Example
_.sortedIndex([30, 50], 40); // => 1 -
static sortedIndexBy(array, value, iterateeopt) → {number}
-
This method is like
_.sortedIndexexcept that it acceptsiteratee
which is invoked forvalueand each element ofarrayto compute their
sort ranking. The iteratee is invoked with one argument: (value).Parameters:
Name Type Attributes Default Description arrayArray The sorted array to inspect.
value* The value to evaluate.
iterateefunction <optional>
_.identity The iteratee invoked per element.
Returns:
number -Returns the index at which
valueshould be inserted
intoarray.- Since:
- 4.0.0
Example
var objects = [{ 'x': 4 }, { 'x': 5 }]; _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); // => 0 // The `_.property` iteratee shorthand. _.sortedIndexBy(objects, { 'x': 4 }, 'x'); // => 0 -
static sortedIndexOf(array, value) → {number}
-
This method is like
_.indexOfexcept that it performs a binary
search on a sortedarray.Parameters:
Name Type Description arrayArray The array to inspect.
value* The value to search for.
Returns:
number -Returns the index of the matched value, else
-1.- Since:
- 4.0.0
Example
_.sortedIndexOf([4, 5, 5, 5, 6], 5); // => 1 -
static sortedLastIndex(array, value) → {number}
-
This method is like
_.sortedIndexexcept that it returns the highest
index at whichvalueshould be inserted intoarrayin order to
maintain its sort order.Parameters:
Name Type Description arrayArray The sorted array to inspect.
value* The value to evaluate.
Returns:
number -Returns the index at which
valueshould be inserted
intoarray.- Since:
- 3.0.0
Example
_.sortedLastIndex([4, 5, 5, 5, 6], 5); // => 4 -
static sortedLastIndexBy(array, value, iterateeopt) → {number}
-
This method is like
_.sortedLastIndexexcept that it acceptsiteratee
which is invoked forvalueand each element ofarrayto compute their
sort ranking. The iteratee is invoked with one argument: (value).Parameters:
Name Type Attributes Default Description arrayArray The sorted array to inspect.
value* The value to evaluate.
iterateefunction <optional>
_.identity The iteratee invoked per element.
Returns:
number -Returns the index at which
valueshould be inserted
intoarray.- Since:
- 4.0.0
Example
var objects = [{ 'x': 4 }, { 'x': 5 }]; _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); // => 1 // The `_.property` iteratee shorthand. _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); // => 1 -
static sortedLastIndexOf(array, value) → {number}
-
This method is like
_.lastIndexOfexcept that it performs a binary
search on a sortedarray.Parameters:
Name Type Description arrayArray The array to inspect.
value* The value to search for.
Returns:
number -Returns the index of the matched value, else
-1.- Since:
- 4.0.0
Example
_.sortedLastIndexOf([4, 5, 5, 5, 6], 5); // => 3 -
static sortedUniq(array) → {Array}
-
This method is like
_.uniqexcept that it's designed and optimized
for sorted arrays.Parameters:
Name Type Description arrayArray The array to inspect.
Returns:
Array -Returns the new duplicate free array.
- Since:
- 4.0.0
Example
_.sortedUniq([1, 1, 2]); // => [1, 2] -
static sortedUniqBy(array, iterateeopt) → {Array}
-
This method is like
_.uniqByexcept that it's designed and optimized
for sorted arrays.Parameters:
Name Type Attributes Description arrayArray The array to inspect.
iterateefunction <optional>
The iteratee invoked per element.
Returns:
Array -Returns the new duplicate free array.
- Since:
- 4.0.0
Example
_.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); // => [1.1, 2.3] -
static split(stringopt, separator, limitopt) → {Array}
-
Splits
stringbyseparator.Note: This method is based on
String#split.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to split.
separatorRegExp | string The separator pattern to split by.
limitnumber <optional>
The length to truncate results to.
Returns:
Array -Returns the string segments.
- Since:
- 4.0.0
Example
_.split('a-b-c', '-', 2); // => ['a', 'b'] -
static spread(func, startopt) → {function}
-
Creates a function that invokes
funcwith thethisbinding of the
create function and an array of arguments much like
Function#apply.Note: This method is based on the
spread operator.Parameters:
Name Type Attributes Default Description funcfunction The function to spread arguments over.
startnumber <optional>
0 The start position of the spread.
Returns:
function -Returns the new function.
- Since:
- 3.2.0
Example
var say = _.spread(function(who, what) { return who + ' says ' + what; }); say(['fred', 'hello']); // => 'fred says hello' var numbers = Promise.all([ Promise.resolve(40), Promise.resolve(36) ]); numbers.then(_.spread(function(x, y) { return x + y; })); // => a Promise of 76 -
static startsWith(stringopt, targetopt, positionopt) → {boolean}
-
Checks if
stringstarts with the given target string.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to inspect.
targetstring <optional>
The string to search for.
positionnumber <optional>
0 The position to search from.
Returns:
boolean -Returns
trueifstringstarts withtarget,
elsefalse.- Since:
- 3.0.0
Example
_.startsWith('abc', 'a'); // => true _.startsWith('abc', 'b'); // => false _.startsWith('abc', 'b', 1); // => true -
static stubArray() → {Array}
-
This method returns a new empty array.
Returns:
Array -Returns the new empty array.
- Since:
- 4.13.0
Example
var arrays = _.times(2, _.stubArray); console.log(arrays); // => [[], []] console.log(arrays[0] === arrays[1]); // => false -
static stubFalse() → {boolean}
-
This method returns
false.Returns:
boolean -Returns
false.- Since:
- 4.13.0
Example
_.times(2, _.stubFalse); // => [false, false] -
static stubObject() → {Object}
-
This method returns a new empty object.
Returns:
Object -Returns the new empty object.
- Since:
- 4.13.0
Example
var objects = _.times(2, _.stubObject); console.log(objects); // => [{}, {}] console.log(objects[0] === objects[1]); // => false -
static stubString() → {string}
-
This method returns an empty string.
Returns:
string -Returns the empty string.
- Since:
- 4.13.0
Example
_.times(2, _.stubString); // => ['', ''] -
static stubTrue() → {boolean}
-
This method returns
true.Returns:
boolean -Returns
true.- Since:
- 4.13.0
Example
_.times(2, _.stubTrue); // => [true, true] -
static sum(array) → {number}
-
Computes the sum of the values in
array.Parameters:
Name Type Description arrayArray The array to iterate over.
Returns:
number -Returns the sum.
- Since:
- 3.4.0
Example
_.sum([4, 2, 8, 6]); // => 20 -
static sumBy(array, iterateeopt) → {number}
-
This method is like
_.sumexcept that it acceptsiterateewhich is
invoked for each element inarrayto generate the value to be summed.
The iteratee is invoked with one argument: (value).Parameters:
Name Type Attributes Default Description arrayArray The array to iterate over.
iterateefunction <optional>
_.identity The iteratee invoked per element.
Returns:
number -Returns the sum.
- Since:
- 4.0.0
Example
var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]; _.sumBy(objects, function(o) { return o.n; }); // => 20 // The `_.property` iteratee shorthand. _.sumBy(objects, 'n'); // => 20 -
static tail(array) → {Array}
-
Gets all but the first element of
array.Parameters:
Name Type Description arrayArray The array to query.
Returns:
Array -Returns the slice of
array.- Since:
- 4.0.0
Example
_.tail([1, 2, 3]); // => [2, 3] -
static take(array, nopt) → {Array}
-
Creates a slice of
arraywithnelements taken from the beginning.Parameters:
Name Type Attributes Default Description arrayArray The array to query.
nnumber <optional>
1 The number of elements to take.
Returns:
Array -Returns the slice of
array.- Since:
- 0.1.0
Example
_.take([1, 2, 3]); // => [1] _.take([1, 2, 3], 2); // => [1, 2] _.take([1, 2, 3], 5); // => [1, 2, 3] _.take([1, 2, 3], 0); // => [] -
static takeRight(array, nopt) → {Array}
-
Creates a slice of
arraywithnelements taken from the end.Parameters:
Name Type Attributes Default Description arrayArray The array to query.
nnumber <optional>
1 The number of elements to take.
Returns:
Array -Returns the slice of
array.- Since:
- 3.0.0
Example
_.takeRight([1, 2, 3]); // => [3] _.takeRight([1, 2, 3], 2); // => [2, 3] _.takeRight([1, 2, 3], 5); // => [1, 2, 3] _.takeRight([1, 2, 3], 0); // => [] -
static takeRightWhile(array, predicateopt) → {Array}
-
Creates a slice of
arraywith elements taken from the end. Elements are
taken untilpredicatereturns falsey. The predicate is invoked with
three arguments: (value, index, array).Parameters:
Name Type Attributes Default Description arrayArray The array to query.
predicatefunction <optional>
_.identity The function invoked per iteration.
Returns:
Array -Returns the slice of
array.- Since:
- 3.0.0
Example
var users = [ { 'user': 'barney', 'active': true }, { 'user': 'fred', 'active': false }, { 'user': 'pebbles', 'active': false } ]; _.takeRightWhile(users, function(o) { return !o.active; }); // => objects for ['fred', 'pebbles'] // The `_.matches` iteratee shorthand. _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); // => objects for ['pebbles'] // The `_.matchesProperty` iteratee shorthand. _.takeRightWhile(users, ['active', false]); // => objects for ['fred', 'pebbles'] // The `_.property` iteratee shorthand. _.takeRightWhile(users, 'active'); // => [] -
static takeWhile(array, predicateopt) → {Array}
-
Creates a slice of
arraywith elements taken from the beginning. Elements
are taken untilpredicatereturns falsey. The predicate is invoked with
three arguments: (value, index, array).Parameters:
Name Type Attributes Default Description arrayArray The array to query.
predicatefunction <optional>
_.identity The function invoked per iteration.
Returns:
Array -Returns the slice of
array.- Since:
- 3.0.0
Example
var users = [ { 'user': 'barney', 'active': false }, { 'user': 'fred', 'active': false }, { 'user': 'pebbles', 'active': true } ]; _.takeWhile(users, function(o) { return !o.active; }); // => objects for ['barney', 'fred'] // The `_.matches` iteratee shorthand. _.takeWhile(users, { 'user': 'barney', 'active': false }); // => objects for ['barney'] // The `_.matchesProperty` iteratee shorthand. _.takeWhile(users, ['active', false]); // => objects for ['barney', 'fred'] // The `_.property` iteratee shorthand. _.takeWhile(users, 'active'); // => [] -
static tap(value, interceptor) → {*}
-
This method invokes
interceptorand returnsvalue. 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.Parameters:
Name Type Description value* The value to provide to
interceptor.interceptorfunction The function to invoke.
Returns:
* -Returns
value.- Since:
- 0.1.0
Example
_([1, 2, 3]) .tap(function(array) { // Mutate input array. array.pop(); }) .reverse() .value(); // => [2, 1] -
static template(stringopt, optionsopt) → {function}
-
Creates a compiled template function that can interpolate data properties
in "interpolate" delimiters, HTML-escape interpolated data properties in
"escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data
properties may be accessed as free variables in the template. If a setting
object is given, it takes precedence over_.templateSettingsvalues.Note: In the development build
_.templateutilizes
sourceURLs
for easier debugging.For more information on precompiling templates see
lodash's custom builds documentation.For more information on Chrome extension sandboxes see
Chrome's extensions documentation.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The template string.
optionsObject <optional>
{} The options object.
Properties
Name Type Attributes Default Description escapeRegExp <optional>
_.templateSettings.escape The HTML "escape" delimiter.
evaluateRegExp <optional>
_.templateSettings.evaluate The "evaluate" delimiter.
importsObject <optional>
_.templateSettings.imports An object to import into the template as free variables.
interpolateRegExp <optional>
_.templateSettings.interpolate The "interpolate" delimiter.
sourceURLstring <optional>
'lodash.templateSources[n]' The sourceURL of the compiled template.
variablestring <optional>
'obj' The data object variable name.
Returns:
function -Returns the compiled template function.
- Since:
- 0.1.0
Example
// Use the "interpolate" delimiter to create a compiled template. var compiled = _.template('hello <%= user %>!'); compiled({ 'user': 'fred' }); // => 'hello fred!' // Use the HTML "escape" delimiter to escape data property values. var compiled = _.template('<b><%- value %></b>'); compiled({ 'value': '<script>' }); // => '<b><script></b>' // Use the "evaluate" delimiter to execute JavaScript and generate HTML. var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>'); compiled({ 'users': ['fred', 'barney'] }); // => '<li>fred</li><li>barney</li>' // Use the internal `print` function in "evaluate" delimiters. var compiled = _.template('<% print("hello " + user); %>!'); compiled({ 'user': 'barney' }); // => 'hello barney!' // Use the ES template literal delimiter as an "interpolate" delimiter. // Disable support by replacing the "interpolate" delimiter. var compiled = _.template('hello ${ user }!'); compiled({ 'user': 'pebbles' }); // => 'hello pebbles!' // Use backslashes to treat delimiters as plain text. var compiled = _.template('<%= "\\<%- value %\\>" %>'); compiled({ 'value': 'ignored' }); // => '<%- value %>' // Use the `imports` option to import `jQuery` as `jq`. var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>'; var compiled = _.template(text, { 'imports': { 'jq': jQuery } }); compiled({ 'users': ['fred', 'barney'] }); // => '<li>fred</li><li>barney</li>' // Use the `sourceURL` option to specify a custom sourceURL for the template. var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' }); compiled(data); // => Find the source of "greeting.jst" under the Sources tab or Resources panel of the web inspector. // Use the `variable` option to ensure a with-statement isn't used in the compiled template. var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' }); compiled.source; // => function(data) { // var __t, __p = ''; // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!'; // return __p; // } // Use custom template delimiters. _.templateSettings.interpolate = /{{([\s\S]+?)}}/g; var compiled = _.template('hello {{ user }}!'); compiled({ 'user': 'mustache' }); // => 'hello mustache!' // Use the `source` property to inline compiled templates for meaningful // line numbers in error messages and stack traces. fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\ var JST = {\ "main": ' + _.template(mainText).source + '\ };\ '); -
static throttle(func, waitopt, optionsopt) → {function}
-
Creates a throttled function that only invokes
funcat most once per
everywaitmilliseconds. The throttled function comes with acancel
method to cancel delayedfuncinvocations and aflushmethod to
immediately invoke them. Provideoptionsto indicate whetherfunc
should be invoked on the leading and/or trailing edge of thewait
timeout. Thefuncis invoked with the last arguments provided to the
throttled function. Subsequent calls to the throttled function return the
result of the lastfuncinvocation.Note: If
leadingandtrailingoptions aretrue,funcis
invoked on the trailing edge of the timeout only if the throttled function
is invoked more than once during thewaittimeout.If
waitis0andleadingisfalse,funcinvocation is deferred
until to the next tick, similar tosetTimeoutwith a timeout of0.See David Corbacho's article
for details over the differences between_.throttleand_.debounce.Parameters:
Name Type Attributes Default Description funcfunction The function to throttle.
waitnumber <optional>
0 The number of milliseconds to throttle invocations to.
optionsObject <optional>
{} The options object.
Properties
Name Type Attributes Default Description leadingboolean <optional>
true Specify invoking on the leading edge of the timeout.
trailingboolean <optional>
true Specify invoking on the trailing edge of the timeout.
Returns:
function -Returns the new throttled function.
- Since:
- 0.1.0
Example
// Avoid excessively updating the position while scrolling. jQuery(window).on('scroll', _.throttle(updatePosition, 100)); // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); jQuery(element).on('click', throttled); // Cancel the trailing throttled invocation. jQuery(window).on('popstate', throttled.cancel); -
static thru(value, interceptor) → {*}
-
This method is like
_.tapexcept that it returns the result ofinterceptor.
The purpose of this method is to "pass thru" values replacing intermediate
results in a method chain sequence.Parameters:
Name Type Description value* The value to provide to
interceptor.interceptorfunction The function to invoke.
Returns:
* -Returns the result of
interceptor.- Since:
- 3.0.0
Example
_(' abc ') .chain() .trim() .thru(function(value) { return [value]; }) .value(); // => ['abc'] -
static times(n, iterateeopt) → {Array}
-
Invokes the iteratee
ntimes, returning an array of the results of
each invocation. The iteratee is invoked with one argument; (index).Parameters:
Name Type Attributes Default Description nnumber The number of times to invoke
iteratee.iterateefunction <optional>
_.identity The function invoked per iteration.
Returns:
Array -Returns the array of results.
- Since:
- 0.1.0
Example
_.times(3, String); // => ['0', '1', '2'] _.times(4, _.constant(0)); // => [0, 0, 0, 0] -
static toArray(value) → {Array}
-
Converts
valueto an array.Parameters:
Name Type Description value* The value to convert.
Returns:
Array -Returns the converted array.
- Since:
- 0.1.0
Example
_.toArray({ 'a': 1, 'b': 2 }); // => [1, 2] _.toArray('abc'); // => ['a', 'b', 'c'] _.toArray(1); // => [] _.toArray(null); // => [] -
static toFinite(value) → {number}
-
Converts
valueto a finite number.Parameters:
Name Type Description value* The value to convert.
Returns:
number -Returns the converted number.
- Since:
- 4.12.0
Example
_.toFinite(3.2); // => 3.2 _.toFinite(Number.MIN_VALUE); // => 5e-324 _.toFinite(Infinity); // => 1.7976931348623157e+308 _.toFinite('3.2'); // => 3.2 -
static toInteger(value) → {number}
-
Converts
valueto an integer.Note: This method is loosely based on
ToInteger.Parameters:
Name Type Description value* The value to convert.
Returns:
number -Returns the converted integer.
- Since:
- 4.0.0
Example
_.toInteger(3.2); // => 3 _.toInteger(Number.MIN_VALUE); // => 0 _.toInteger(Infinity); // => 1.7976931348623157e+308 _.toInteger('3.2'); // => 3 -
static toLength(value) → {number}
-
Converts
valueto an integer suitable for use as the length of an
array-like object.Note: This method is based on
ToLength.Parameters:
Name Type Description value* The value to convert.
Returns:
number -Returns the converted integer.
- Since:
- 4.0.0
Example
_.toLength(3.2); // => 3 _.toLength(Number.MIN_VALUE); // => 0 _.toLength(Infinity); // => 4294967295 _.toLength('3.2'); // => 3 -
static toLower(stringopt) → {string}
-
Converts
string, as a whole, to lower case just like
String#toLowerCase.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to convert.
Returns:
string -Returns the lower cased string.
- Since:
- 4.0.0
Example
_.toLower('--Foo-Bar--'); // => '--foo-bar--' _.toLower('fooBar'); // => 'foobar' _.toLower('__FOO_BAR__'); // => '__foo_bar__' -
static toNumber(value) → {number}
-
Converts
valueto a number.Parameters:
Name Type Description value* The value to process.
Returns:
number -Returns the number.
- Since:
- 4.0.0
Example
_.toNumber(3.2); // => 3.2 _.toNumber(Number.MIN_VALUE); // => 5e-324 _.toNumber(Infinity); // => Infinity _.toNumber('3.2'); // => 3.2 -
static toPath(value) → {Array}
-
Converts
valueto a property path array.Parameters:
Name Type Description value* The value to convert.
Returns:
Array -Returns the new property path array.
- Since:
- 4.0.0
Example
_.toPath('a.b.c'); // => ['a', 'b', 'c'] _.toPath('a[0].b.c'); // => ['a', '0', 'b', 'c'] -
static toPlainObject(value) → {Object}
-
Converts
valueto a plain object flattening inherited enumerable string
keyed properties ofvalueto own properties of the plain object.Parameters:
Name Type Description value* The value to convert.
Returns:
Object -Returns the converted plain object.
- Since:
- 3.0.0
Example
function Foo() { this.b = 2; } Foo.prototype.c = 3; _.assign({ 'a': 1 }, new Foo); // => { 'a': 1, 'b': 2 } _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); // => { 'a': 1, 'b': 2, 'c': 3 } -
static toSafeInteger(value) → {number}
-
Converts
valueto a safe integer. A safe integer can be compared and
represented correctly.Parameters:
Name Type Description value* The value to convert.
Returns:
number -Returns the converted integer.
- Since:
- 4.0.0
Example
_.toSafeInteger(3.2); // => 3 _.toSafeInteger(Number.MIN_VALUE); // => 0 _.toSafeInteger(Infinity); // => 9007199254740991 _.toSafeInteger('3.2'); // => 3 -
static toString(value) → {string}
-
Converts
valueto a string. An empty string is returned fornull
andundefinedvalues. The sign of-0is preserved.Parameters:
Name Type Description value* The value to convert.
Returns:
string -Returns the converted string.
- Since:
- 4.0.0
Example
_.toString(null); // => '' _.toString(-0); // => '-0' _.toString([1, 2, 3]); // => '1,2,3' -
static toUpper(stringopt) → {string}
-
Converts
string, as a whole, to upper case just like
String#toUpperCase.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to convert.
Returns:
string -Returns the upper cased string.
- Since:
- 4.0.0
Example
_.toUpper('--foo-bar--'); // => '--FOO-BAR--' _.toUpper('fooBar'); // => 'FOOBAR' _.toUpper('__foo_bar__'); // => '__FOO_BAR__' -
static transform(object, iterateeopt, accumulatoropt) → {*}
-
An alternative to
_.reduce; this method transformsobjectto a new
accumulatorobject which is the result of running each of its own
enumerable string keyed properties thruiteratee, with each invocation
potentially mutating theaccumulatorobject. Ifaccumulatoris not
provided, a new object with the same[[Prototype]]will be used. The
iteratee is invoked with four arguments: (accumulator, value, key, object).
Iteratee functions may exit iteration early by explicitly returningfalse.Parameters:
Name Type Attributes Default Description objectObject The object to iterate over.
iterateefunction <optional>
_.identity The function invoked per iteration.
accumulator* <optional>
The custom accumulator value.
Returns:
* -Returns the accumulated value.
- Since:
- 1.3.0
Example
_.transform([2, 3, 4], function(result, n) { result.push(n *= n); return n % 2 == 0; }, []); // => [4, 9] _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { (result[value] || (result[value] = [])).push(key); }, {}); // => { '1': ['a', 'c'], '2': ['b'] } -
static trim(stringopt, charsopt) → {string}
-
Removes leading and trailing whitespace or specified characters from
string.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to trim.
charsstring <optional>
whitespace The characters to trim.
Returns:
string -Returns the trimmed string.
- Since:
- 3.0.0
Example
_.trim(' abc '); // => 'abc' _.trim('-_-abc-_-', '_-'); // => 'abc' _.map([' foo ', ' bar '], _.trim); // => ['foo', 'bar'] -
static trimEnd(stringopt, charsopt) → {string}
-
Removes trailing whitespace or specified characters from
string.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to trim.
charsstring <optional>
whitespace The characters to trim.
Returns:
string -Returns the trimmed string.
- Since:
- 4.0.0
Example
_.trimEnd(' abc '); // => ' abc' _.trimEnd('-_-abc-_-', '_-'); // => '-_-abc' -
static trimStart(stringopt, charsopt) → {string}
-
Removes leading whitespace or specified characters from
string.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to trim.
charsstring <optional>
whitespace The characters to trim.
Returns:
string -Returns the trimmed string.
- Since:
- 4.0.0
Example
_.trimStart(' abc '); // => 'abc ' _.trimStart('-_-abc-_-', '_-'); // => 'abc-_-' -
static truncate(stringopt, optionsopt) → {string}
-
Truncates
stringif it's longer than the given maximum string length.
The last characters of the truncated string are replaced with the omission
string which defaults to "...".Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to truncate.
optionsObject <optional>
{} The options object.
Properties
Name Type Attributes Default Description lengthnumber <optional>
30 The maximum string length.
omissionstring <optional>
'...' The string to indicate text is omitted.
separatorRegExp | string <optional>
The separator pattern to truncate to.
Returns:
string -Returns the truncated string.
- Since:
- 4.0.0
Example
_.truncate('hi-diddly-ho there, neighborino'); // => 'hi-diddly-ho there, neighbo...' _.truncate('hi-diddly-ho there, neighborino', { 'length': 24, 'separator': ' ' }); // => 'hi-diddly-ho there,...' _.truncate('hi-diddly-ho there, neighborino', { 'length': 24, 'separator': /,? +/ }); // => 'hi-diddly-ho there...' _.truncate('hi-diddly-ho there, neighborino', { 'omission': ' [...]' }); // => 'hi-diddly-ho there, neig [...]' -
static unary(func) → {function}
-
Creates a function that accepts up to one argument, ignoring any
additional arguments.Parameters:
Name Type Description funcfunction The function to cap arguments for.
Returns:
function -Returns the new capped function.
- Since:
- 4.0.0
Example
_.map(['6', '8', '10'], _.unary(parseInt)); // => [6, 8, 10] -
static unescape(stringopt) → {string}
-
The inverse of
_.escape; this method converts the HTML entities
&,<,>,", and'instringto
their corresponding characters.Note: No other HTML entities are unescaped. To unescape additional
HTML entities use a third-party library like he.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to unescape.
Returns:
string -Returns the unescaped string.
- Since:
- 0.6.0
Example
_.unescape('fred, barney, & pebbles'); // => 'fred, barney, & pebbles' -
static uniq(array) → {Array}
-
Creates a duplicate-free version of an array, using
SameValueZero
for equality comparisons, in which only the first occurrence of each element
is kept. The order of result values is determined by the order they occur
in the array.Parameters:
Name Type Description arrayArray The array to inspect.
Returns:
Array -Returns the new duplicate free array.
- Since:
- 0.1.0
Example
_.uniq([2, 1, 2]); // => [2, 1] -
static uniqBy(array, iterateeopt) → {Array}
-
This method is like
_.uniqexcept that it acceptsiterateewhich is
invoked for each element inarrayto generate the criterion by which
uniqueness is computed. The order of result values is determined by the
order they occur in the array. The iteratee is invoked with one argument:
(value).Parameters:
Name Type Attributes Default Description arrayArray The array to inspect.
iterateefunction <optional>
_.identity The iteratee invoked per element.
Returns:
Array -Returns the new duplicate free array.
- Since:
- 4.0.0
Example
_.uniqBy([2.1, 1.2, 2.3], Math.floor); // => [2.1, 1.2] // The `_.property` iteratee shorthand. _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); // => [{ 'x': 1 }, { 'x': 2 }] -
static uniqWith(array, comparatoropt) → {Array}
-
This method is like
_.uniqexcept that it acceptscomparatorwhich
is invoked to compare elements ofarray. The order of result values is
determined by the order they occur in the array.The comparator is invoked
with two arguments: (arrVal, othVal).Parameters:
Name Type Attributes Description arrayArray The array to inspect.
comparatorfunction <optional>
The comparator invoked per element.
Returns:
Array -Returns the new duplicate free array.
- Since:
- 4.0.0
Example
var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; _.uniqWith(objects, _.isEqual); // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] -
static uniqueId(prefixopt) → {string}
-
Generates a unique ID. If
prefixis given, the ID is appended to it.Parameters:
Name Type Attributes Default Description prefixstring <optional>
'' The value to prefix the ID with.
Returns:
string -Returns the unique ID.
- Since:
- 0.1.0
Example
_.uniqueId('contact_'); // => 'contact_104' _.uniqueId(); // => '105' -
static unset(object, path) → {boolean}
-
Removes the property at
pathofobject.Note: This method mutates
object.Parameters:
Name Type Description objectObject The object to modify.
pathArray | string The path of the property to unset.
Returns:
boolean -Returns
trueif the property is deleted, elsefalse.- Since:
- 4.0.0
Example
var object = { 'a': [{ 'b': { 'c': 7 } }] }; _.unset(object, 'a[0].b.c'); // => true console.log(object); // => { 'a': [{ 'b': {} }] }; _.unset(object, ['a', '0', 'b', 'c']); // => true console.log(object); // => { 'a': [{ 'b': {} }] }; -
static unzip(array) → {Array}
-
This method is like
_.zipexcept that it accepts an array of grouped
elements and creates an array regrouping the elements to their pre-zip
configuration.Parameters:
Name Type Description arrayArray The array of grouped elements to process.
Returns:
Array -Returns the new array of regrouped elements.
- Since:
- 1.2.0
Example
var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); // => [['a', 1, true], ['b', 2, false]] _.unzip(zipped); // => [['a', 'b'], [1, 2], [true, false]] -
static unzipWith(array, iterateeopt) → {Array}
-
This method is like
_.unzipexcept that it acceptsiterateeto specify
how regrouped values should be combined. The iteratee is invoked with the
elements of each group: (...group).Parameters:
Name Type Attributes Default Description arrayArray The array of grouped elements to process.
iterateefunction <optional>
_.identity The function to combine
regrouped values.Returns:
Array -Returns the new array of regrouped elements.
- Since:
- 3.8.0
Example
var zipped = _.zip([1, 2], [10, 20], [100, 200]); // => [[1, 10, 100], [2, 20, 200]] _.unzipWith(zipped, _.add); // => [3, 30, 300] -
static update(object, path, updater) → {Object}
-
This method is like
_.setexcept that acceptsupdaterto produce the
value to set. Use_.updateWithto customizepathcreation. Theupdater
is invoked with one argument: (value).Note: This method mutates
object.Parameters:
Name Type Description objectObject The object to modify.
pathArray | string The path of the property to set.
updaterfunction The function to produce the updated value.
Returns:
Object -Returns
object.- Since:
- 4.6.0
Example
var object = { 'a': [{ 'b': { 'c': 3 } }] }; _.update(object, 'a[0].b.c', function(n) { return n * n; }); console.log(object.a[0].b.c); // => 9 _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); console.log(object.x[0].y.z); // => 0 -
static updateWith(object, path, updater, customizeropt) → {Object}
-
This method is like
_.updateexcept that it acceptscustomizerwhich is
invoked to produce the objects ofpath. Ifcustomizerreturnsundefined
path creation is handled by the method instead. Thecustomizeris invoked
with three arguments: (nsValue, key, nsObject).Note: This method mutates
object.Parameters:
Name Type Attributes Description objectObject The object to modify.
pathArray | string The path of the property to set.
updaterfunction The function to produce the updated value.
customizerfunction <optional>
The function to customize assigned values.
Returns:
Object -Returns
object.- Since:
- 4.6.0
Example
var object = {}; _.updateWith(object, '[0][1]', _.constant('a'), Object); // => { '0': { '1': 'a' } } -
static values(object) → {Array}
-
Creates an array of the own enumerable string keyed property values of
object.Note: Non-object values are coerced to objects.
Parameters:
Name Type Description objectObject The object to query.
Returns:
Array -Returns the array of property values.
- Since:
- 0.1.0
Example
function Foo() { this.a = 1; this.b = 2; } Foo.prototype.c = 3; _.values(new Foo); // => [1, 2] (iteration order is not guaranteed) _.values('hi'); // => ['h', 'i'] -
static valuesIn(object) → {Array}
-
Creates an array of the own and inherited enumerable string keyed property
values ofobject.Note: Non-object values are coerced to objects.
Parameters:
Name Type Description objectObject The object to query.
Returns:
Array -Returns the array of property values.
- Since:
- 3.0.0
Example
function Foo() { this.a = 1; this.b = 2; } Foo.prototype.c = 3; _.valuesIn(new Foo); // => [1, 2, 3] (iteration order is not guaranteed) -
static words(stringopt, patternopt) → {Array}
-
Splits
stringinto an array of its words.Parameters:
Name Type Attributes Default Description stringstring <optional>
'' The string to inspect.
patternRegExp | string <optional>
The pattern to match words.
Returns:
Array -Returns the words of
string.- Since:
- 3.0.0
Example
_.words('fred, barney, & pebbles'); // => ['fred', 'barney', 'pebbles'] _.words('fred, barney, & pebbles', /[^, ]+/g); // => ['fred', 'barney', '&', 'pebbles'] -
static wrap(value, wrapperopt) → {function}
-
Creates a function that provides
valuetowrapperas its first
argument. Any additional arguments provided to the function are appended
to those provided to thewrapper. The wrapper is invoked with thethis
binding of the created function.Parameters:
Name Type Attributes Default Description value* The value to wrap.
wrapperfunction <optional>
identity The wrapper function.
Returns:
function -Returns the new function.
- Since:
- 0.1.0
Example
var p = _.wrap(_.escape, function(func, text) { return '<p>' + func(text) + '</p>'; }); p('fred, barney, & pebbles'); // => '<p>fred, barney, & pebbles</p>' -
static zipObject(propsopt, valuesopt) → {Object}
-
This method is like
_.fromPairsexcept that it accepts two arrays,
one of property identifiers and one of corresponding values.Parameters:
Name Type Attributes Default Description propsArray <optional>
[] The property identifiers.
valuesArray <optional>
[] The property values.
Returns:
Object -Returns the new object.
- Since:
- 0.4.0
Example
_.zipObject(['a', 'b'], [1, 2]); // => { 'a': 1, 'b': 2 } -
static zipObjectDeep(propsopt, valuesopt) → {Object}
-
This method is like
_.zipObjectexcept that it supports property paths.Parameters:
Name Type Attributes Default Description propsArray <optional>
[] The property identifiers.
valuesArray <optional>
[] The property values.
Returns:
Object -Returns the new object.
- Since:
- 4.1.0
Example
_.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }