A low-level utility library delivering consistency, customization, performance, and extra features.
-
Lo-Dash builds (for modern environments):
Development and Production -
Lo-Dash compatibility builds (for legacy and modern environments):
Development and Production -
Underscore compatibility builds:
Development and Production -
CDN copies of ≤ v1.3.1’s builds are available on cdnjs thanks to CloudFlare:
Lo-Dash dev, Lo-Dash prod,
Lo-Dash compat-dev, Lo-Dash compat-prod,
Underscore compat-dev, and Underscore compat-prod -
For optimal file size, create a custom build with only the features you need
We’ve got API docs, benchmarks, and unit tests.
For a list of upcoming features, check out our roadmap.
For more information check out these articles, screencasts, and other videos over Lo-Dash:
- Posts
- Videos
- Introducing Lo-Dash
- Lo-Dash optimizations and custom builds
- Lo-Dash’s origin and why it’s a better utility belt
- Unit testing in Lo-Dash
- Lo-Dash’s approach to native method use
- CascadiaJS: Lo-Dash for a better utility belt
- AMD loader support (RequireJS, curl.js, etc.)
- _(…) supports intuitive chaining
- _.at for cherry-picking collection values
- _.bindKey for binding “lazy” defined methods
- _.cloneDeep for deep cloning arrays and objects
- _.contains accepts a
fromIndexargument - _.debounce and _.throttle accept an
optionsargument for more control - _.createCallback to customize how callback arguments are handled and support callback shorthands in mixins
- _.findIndex and _.findKey for finding indexes and keys of collections
- _.forEach is chainable and supports exiting iteration early
- _.forIn for iterating over an object’s own and inherited properties
- _.forOwn for iterating over an object’s own properties
- _.isPlainObject checks if values are created by the
Objectconstructor - _.merge for a deep _.extend
- _.parseInt for consistent cross-environment behavior
- _.partial and _.partialRight for partial application without
thisbinding - _.runInContext for easier mocking and extended environment support
- _.support to flag environment features
- _.template supports “imports” options, ES6 template delimiters, and sourceURLs
- _.transform as a powerful alternative to _.reduce for transforming objects
- _.unzip as the inverse of _.zip
- _.where supports deep object comparisons
- _.clone, _.omit, _.pick,
and more… accept
callbackandthisArgarguments - _.contains, _.size, _.toArray, and more… accept strings
- _.filter, _.find, _.map,
and more… support “_.pluck” and “_.where”
callbackshorthands
Lo-Dash has been tested in at least Chrome 527, Firefox 221, IE 6-10, Opera 9.25~12, Safari 3-6, Node.js 0.4.8-0.10.7*, Narwhal 0.3.2, PhantomJS 1.9.0, RingoJS 0.9, and Rhino 1.7RC5.
* Node bugs #5622 and #5688 prevent the lodash command-line utility from creating minified builds in Node.js 0.10.8-0.10.11
Custom builds make it easy to create lightweight versions of Lo-Dash containing only the methods you need. To top it off, we handle all method dependency and alias mapping for you. For a more detailed summary over the differences between various builds, check out the wiki page.
- Backbone builds, with only methods required by Backbone, may be created using the
backbonemodifier argument.
lodash backbone- Legacy builds, tailored for older environments without ES5 support, may be created using the
legacymodifier argument.
lodash legacy- Modern builds, tailored for newer environments with ES5 support, may be created using the
modernmodifier argument.
lodash modern- Mobile builds, without method compilation and most bug fixes for old browsers, may be created using the
mobilemodifier argument.
lodash mobile- Strict builds, with
_.bindAll,_.defaults, and_.extendin strict mode, may be created using thestrictmodifier argument.
lodash strict- Underscore builds, tailored for projects already using Underscore, may be created using the
underscoremodifier argument.
lodash underscoreCustom builds may be created using the following commands:
- Use the
categoryargument to pass comma separated categories of methods to include in the build.
Valid categories (case-insensitive) are “arrays”, “chaining”, “collections”, “functions”, “objects”, and “utilities”.
lodash category=collections,functions
lodash category="collections, functions"- Use the
exportsargument to pass comma separated names of ways to export theLoDashfunction.
Valid exports are “amd”, “commonjs”, “global”, “node”, and “none”.
lodash exports=amd,commonjs,node
lodash exports="amd, commonjs, node"- Use the
iifeargument to specify code to replace the immediately-invoked function expression that wraps Lo-Dash.
lodash iife="!function(window,undefined){%output%}(this)"- Use the
includeargument to pass comma separated method/category names to include in the build.
lodash include=each,filter,map
lodash include="each, filter, map"- Use the
minusargument to pass comma separated method/category names to remove from those included in the build.
lodash underscore minus=result,shuffle
lodash underscore minus="result, shuffle"- Use the
plusargument to pass comma separated method/category names to add to those included in the build.
lodash backbone plus=random,template
lodash backbone plus="random, template"- Use the
templateargument to pass the file path pattern used to match template files to precompile.
lodash template="./*.jst"- Use the
settingsargument to pass the template settings used when precompiling templates.
lodash settings="{interpolate:/\{\{([\s\S]+?)\}\}/g}"- Use the
moduleIdargument to specify the AMD module ID of Lo-Dash, which defaults to “lodash”, used by precompiled templates.
lodash moduleId="underscore"All arguments, except legacy with mobile, modern, or underscore, may be combined.
Unless specified by -o or --output, all files created are saved to the current working directory.
The following options are also supported:
-c,--stdout......... Write output to standard output-d,--debug........... Write only the non-minified development output-h,--help............. Display help information-m,--minify......... Write only the minified production output-o,--output......... Write output to a given path/filename-p,--source-map.. Generate a source map for the minified output, using an optional source map URL-s,--silent......... Skip status updates normally logged to the console-V,--version....... Output current version of Lo-Dash
The lodash command-line utility is available when Lo-Dash is installed as a global package (i.e. npm install -g lodash).
In browsers:
<script src="lodash.js"></script>Using npm:
npm install lodash
npm install -g lodash
npm link lodashTo avoid potential issues, update npm before installing Lo-Dash:
npm install npm -gIn Node.js and RingoJS ≥ v0.8.0:
var _ = require('lodash');
// or as a drop-in replacement for Underscore
var _ = require('lodash/dist/lodash.underscore');Note: If Lo-Dash is installed globally, run npm link lodash in your project’s root directory before requiring it.
In RingoJS ≤ v0.7.0:
var _ = require('lodash')._;In Rhino:
load('lodash.js');In an AMD loader like RequireJS:
require({
'paths': {
'underscore': 'path/to/lodash'
}
},
['underscore'], function(_) {
console.log(_.VERSION);
});- Added missing
cacheproperty to the objects returned bygetObject - Ensured
maxWaitunit tests pass in Ringo - Increased the
maxPoolSizevalue - Optimized
releaseArrayandreleaseObject
- Added
_.transformmethod - Added
_.chainand_.findWherealiases - Added internal array and object pooling
- Added Istanbul test coverage reports to Travis CI
- Added
maxWaitoption to_.debounce - Added support for floating point numbers to
_.random - Added Volo configuration to package.json
- Adjusted UMD for
component build - Allowed more stable mixing of
lodashandunderscorebuild methods - Ensured debounced function with,
leadingandtrailingoptions, works as expected - Ensured minified builds work with the Dojo builder
- Ensured minification avoids deoptimizing expressions containing boolean values
- Ensured support for
--outputpaths containing build command keywords - Ensured unknown types return
falsein_.isObjectand_.isRegExp - Ensured
_.clone,_.flatten, and_.uniqcan be used as acallbackfor methods like_.map - Ensured
_.forInworks on objects with longer inheritance chains in IE < 9 - Ensured
_.isPlainObjectreturnstruefor empty objects in IE < 9 - Ensured
_.maxand_.minchain correctly - Ensured
clearTimeoutuse doesn’t cause errors in Titanium - Ensured that the
--stdoutbuild option doesn't write to a file - Exposed memoized function’s
cache - Fixed
Error.prototypeiteration bugs - Fixed "scripts" paths in component.json
- Made methods support customizing
_.indexOf - Made the build track dependencies of private functions
- Made the
templatepre-compiler build option avoid escaping non-ascii characters - Made
_.createCallbackavoid binding functions if they don’t referencethis - Optimized the Closure Compiler minification process
- Optimized the large array cache for
_.difference,_.intersection, and_.uniq - Optimized internal
_.flattenand_.indexOfuse - Reduced
_.unzipand_.zip - Removed special handling of arrays in
_.assignand_.defaults
The full changelog is available here.
Lo-Dash is part of the BestieJS “Best in Class” module collection. This means we promote solid browser/environment support, ES5+ precedents, unit testing, and plenty of documentation.
| John-David Dalton |
| Kit Cambridge | Mathias Bynens |