defineProperty fallback in place so it can be used in phantom.js without throwing an error.
defineProperty fallback in place so it can be used in phantom.js without throwing an error.
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 |