A utility library delivering consistency, customization, performance, & extras.
Check out our wiki for details over the differences between builds.
- Modern build (minified) perfect for new environments
(Chrome ≥ 14, Firefox ≥ 10, IE ≥ 9, Node.js, Opera ≥ 12, Safari ≥ 5.1) - Compatibility build (minified) for old environments too
- Underscore build (minified) as a drop-in replacement for Underscore v1.6.0
CDN copies are available on cdnjs & jsDelivr. For smaller file sizes, create custom builds with only the features needed.
Love modules? We’ve got you covered with lodash-amd, lodash-es6, lodash-node, & npm packages per method.
There’s plenty of API documentation, unit tests, & benchmarks.
Check out DevDocs; a fast, organized, & searchable interface for our documentation.
The full changelog for this release is available on our wiki.
A list of upcoming features is available on our roadmap.
- ~100% code coverage
- Module bundles for AMD & Node.js as well as npm packages
- Follows semantic versioning for releases
- _(…) supports intuitive chaining
- _.at for cherry-picking collection values
- _.bindKey for binding “lazy” defined methods
- _.clone supports shallow cloning of
Date
&RegExp
objects - _.cloneDeep for deep cloning arrays & objects
- _.contains accepts a
fromIndex
- _.create for easier object inheritance
- _.callback for extending callbacks in methods & mixins
- _.curry for creating curried functions
- _.debounce & _.throttle accept additional
options
for more control - _.findIndex & _.findKey for finding indexes & keys
- _.forEach supports exiting early
- _.forIn for iterating own & inherited properties
- _.forOwn for iterating own properties
- _.isError to check for error objects
- _.isPlainObject to check for objects created by
Object
- _.keysIn & _.valuesIn for keys and values of own & inherited properties
- _.mapValues for mapping values to an object
- _.memoize exposes the
cache
of memoized functions - _.merge for a deep _.extend
- _.negate to create negated predicate functions
- _.noop for function placeholders
- _.parseInt for consistent behavior
- _.pull, _.pullAt, & _.remove for mutating arrays
- _.random supports returning floating-point numbers
- _.runInContext for easier mocking
- _.slice for creating subsets of array-like values
- _.sortBy supports sorting by multiple properties
- _.support for flagging environment features
- _.template supports “imports” options & ES6 template delimiters
- _.transform as a powerful alternative to _.reduce for transforming objects
- _.where supports deep object comparisons
- _.xor to complement _.difference, _.intersection, & _.union
- _.zip is capable of unzipping values
- _.bind, _.curry, _.partial, & more support argument placeholders
- _.capitalize, _.trim, & more string methods
- _.contains, _.toArray, & more accept strings
- _.dropWhile, _.takeWhile, & more to complement _.first, _.initial, _.last, & _.rest
- _.filter, _.map, & more support “_.pluck” & “_.where” shorthands
- _.findLast, _.findLastIndex, & more right-associative methods
- _.omit, _.pick, & more accept callbacks
- Podcasts
- Posts
- Videos
A list of other community created podcasts, posts, & videos is available on our wiki.
Tested in Chrome (19, 33-34), Firefox (3, 20, 28-29), IE 6-11, Opera (10, 12, 19-20), Safari 5-7, Node.js 0.6.21~0.10.28, Narwhal 0.3.2, PhantomJS 1.9.2, RingoJS 0.9, & Rhino 1.7RC5.
Automated browser test results are available as well as Travis CI builds for lodash, lodash-cli, lodash-amd, lodash-node, & grunt-lodash.
Special thanks to Sauce Labs for providing automated browser testing.
In browsers:
<script src="lodash.js"></script>
Using npm
:
npm i --save lodash
{sudo} npm i -g lodash
npm ln lodash
var _ = require('lodash');
// or as Underscore
var _ = require('lodash/dist/lodash.underscore');
Notes:
- Don’t assign values to special variable
_
when in the REPL - If Lo-Dash is installed globally, run
npm ln lodash
in your project’s root directory before requiring it
In Rhino:
load('lodash.js');
In an AMD loader:
require({
'packages': [
{ 'name': 'lodash', 'location': 'path/to/lodash', 'main': 'lodash' }
]
},
['lodash'], function(_) {
console.log(_.VERSION);
});
John-David Dalton |
Blaine Bublitz | Kit Cambridge | Mathias Bynens |