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.2.0’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
- _.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 526, Firefox 219, IE 6-10, Opera 9.25~12, Safari 3-6, Node.js 0.4.8-0.10.4, Narwhal 0.3.2, PhantomJS 1.9.0, RingoJS 0.9, and Rhino 1.7RC5.
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.
- 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
_.unzip - Added an
optionsargument to_.debounceand_.throttle - Allowed non-
underscorebuilds to include_.findWhereand_.chain - Ensured “Arrays” and “Objects” category methods work with
argumentsobjects and arrays respectively - Ensured build utility runs on Windows
- Ensured
underscorebuild versions of “isType” methods align with Underscore - Ensured methods avoid issues with the
__proto__property - Ensured
_.isEqualuses acallbackonly if it’s a function - Ensured
_.mergeapplies acallbackto nested properties - Ensured
_.mergepasses the correctcallbackarguments when comparing objects - Made Lo-Dash work with Browserify
- Removed method compilation from the
modernbuild
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.