Lo-Dash v2.0.0
A utility library delivering consistency, customization, performance, & extras.
Download
-
Modern builds: Development & Production
-
Compatibility builds: Development & Production
-
Underscore builds: Development & Production
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-node, and npm packages per method.
Dive in
There’s plenty of documentation, unit tests, & benchmarks.
For a list of upcoming features, check out our roadmap.
Features not in Underscore
- AMD loader support (curl, dojo, requirejs, etc.)
- _(…) supports intuitive chaining
- _.at for cherry-picking collection values
- _.bindKey for binding “lazy” defined methods
- _.cloneDeep for deep cloning arrays & objects
- _.contains accepts a
fromIndex - _.createCallback for extending callbacks in methods & mixins
- _.curry for creating curried functions
- _.debounce & _.throttle accept
optionsfor more control - _.findIndex & _.findKey for finding indexes & keys
- _.forEach is chainable & supports exiting early
- _.forIn for iterating own & inherited properties
- _.forOwn for iterating own properties
- _.isPlainObject for checking if values are created by
Object - _.memoize exposes the
cacheof memoized functions - _.merge for a deep _.extend
- _.parseInt for consistent behavior
- _.partialRight for partial application from the right
- _.pull & _.remove for mutating arrays
- _.runInContext for easier mocking
- _.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
- _.zip is capable of unzipping values
- _.omit, _.pick, & more accept callbacks
- _.contains, _.toArray, & more accept strings
- _.filter, _.map, & more support “_.pluck” & “_.where” shorthands
- _.findLast, _.findLastIndex, & more right-associative methods
Resources
- Posts
- Videos
Support
Tested in Chrome 529, Firefox 223, IE 6-10, Opera 9.25~15, Safari 3-6, Node.js 0.6.8-0.10.18, Narwhal 0.3.2, PhantomJS 1.9.1, RingoJS 0.9, & Rhino 1.7RC5.
Installation & usage
In browsers:
<script src="lodash.js"></script>
Using npm:
npm i lodash
{sudo} npm i -g lodash
npm link 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 link lodashin your project’s root directory before requiring it - Node.js 0.10.8-0.10.11 have bugs preventing minified builds
In Rhino:
load('lodash.js');
In an AMD loader:
require({
'packages': [
{ 'name': 'lodash', 'location': 'path/to/lodash', 'main': 'lodash' }
]
},
['lodash'], function(_) {
console.log(_.VERSION);
});
Release Notes
v2.0.0
Compatibility Warnings
- Aligned
_.afterwith Underscore 1.5.0, making it always return a function
Noteable Changes
- Created Lo-Dash methods as
npmpackages & AMD/Node.js modules - Made
_.chainforce chaining for all methods, even those that normally return unwrapped values - Moved the build utility to lodash-cli
- Optimized
_.contains,_.debounce,_.isArguments,_.throttle,_.where,
& functions created by_.bind,_.bindKey,_.curry,_.partial, &_.partialRight - Added
_.curry,_.forEachRight,_.indexBy,_.findLast,_.findLastIndex,
_.findLastKey,_.forInRight,_.forOwnRight,_.pull,_.remove, &_.sample
Other Changes
- Added Curl & Dojo module loaders to the unit tests
- Added the
modularizebuild option - Added support for the
iifecommand to be used without an%output%token - Added support for
_.mixinto accept a destination object - Added support for
_.rangeto accept astepof0 - Added
_.eachRightas an alias for_.forEachRight - Ensured “Arrays” methods support
argumentsobjects - Ensured “Functions” methods throw when not passed functions
- Ensured
_.atworks as acallbackfor_.map - Ensured
_.createCallbackworks when noargCountis specified - Ensured
_.first&_.lastreturn arrays when passed a falseyarraywith annvalue - Ensured
_.flattenworks withargumentsobjects - Ensured minified files work with Dojo’s builder
- Ensured
_.zipObjectskips falsey elements - Improved dead code removal from builds
- Improved JSDoc syntax
- Made
_.memoizeavoid prefixingcachekeys when using aresolverfunction - Made
_.unzipan alias of_.zip - Removed local
clearTimeout&setTimeoutvariables from theunderscorebuild - Reduced the size of the repo &
npmpackage - Simplified the bailout in
createCache - Updated sourceURL & sourceMappingURL syntax
- Updated
underscorebuild compatibility to v1.5.2
The full changelog is available here.
BestieJS
Lo-Dash is part of the BestieJS “Best in Class” module collection. This means it promotes solid environment support, ES5+ precedents, unit testing, & plenty of documentation.
Author
| John-David Dalton |
Contributors
| Blaine Bublitz | Kit Cambridge | Mathias Bynens |