<<<<<<< HEAD
A drop-in replacement* for Underscore.js, from the devs behind jsPerf.com, delivering performance, bug fixes, and additional features.
Lo-Dash’s performance is gained by avoiding slower native methods, instead opting for simplified non-ES5 compliant methods optimized for common usage, and by leveraging function compilation to reduce the number of overall function calls.
- Development build
- Production build
- Underscore build tailored for projects already using Underscore
- CDN copies of ≤ v0.9.2’s Production, Underscore, and Development builds are available on cdnjs thanks to CloudFlare
- For optimal file size, create a custom build with only the features you need
We’ve got API docs, benchmarks, and unit tests.
Create your own benchmarks at jsPerf, or search for existing ones.
For a list of upcoming features, check out our roadmap.
For more information check out these screencasts over Lo-Dash:
- 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
- AMD loader support (RequireJS, curl.js, etc.)
- _.clone supports “deep” cloning
- _.contains accepts a
fromIndex
argument - _.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
Object
constructor - _.lateBind for late binding
- _.merge for a “deep” _.extend
- _.partial for partial application without
this
binding - _.pick and _.omit accepts
callback
andthisArg
arguments - _.template supports ES6 delimiters and utilizes sourceURLs for easier debugging
- _.contains, _.size, _.toArray, and more… accept strings
Lo-Dash has been tested in at least Chrome 523, Firefox 116, IE 6-10, Opera 9.25-12, Safari 3-6, Node.js 0.4.8-0.8.14, Narwhal 0.3.2, RingoJS 0.8, 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
backbone
modifier argument.
lodash backbone
- CSP builds, supporting default Content Security Policy restrictions, may be created using the
csp
modifier argument.
lodash csp
- Legacy builds, tailored for older browsers without ES5 support, may be created using the
legacy
modifier argument.
lodash legacy
- Mobile builds, with IE < 9 bug fixes and method compilation removed, may be created using the
mobile
modifier argument.
lodash mobile
- Strict builds, with
_.bindAll
,_.defaults
, and_.extend
in strict mode, may be created using thestrict
modifier argument.
lodash strict
- Underscore builds, tailored for projects already using Underscore, may be created using the
underscore
modifier argument.
lodash underscore
Custom builds may be created using the following commands:
- Use the
category
argument 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
exports
argument to pass comma separated names of ways to export theLoDash
function.
Valid exports are “amd”, “commonjs”, “global”, “node”, and “none”.
lodash exports=amd,commonjs,node
lodash exports="amd, commonjs, node"
- Use the
iife
argument to specify code to replace the immediately-invoked function expression that wraps Lo-Dash.
lodash iife="!function(window,undefined){%output%}(this)"
- Use the
include
argument to pass comma separated method/category names to include in the build.
lodash include=each,filter,map
lodash include="each, filter, map"
- Use the
minus
argument 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
plus
argument 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
template
argument to pass the file path pattern used to match template files to precompile.
lodash template="./*.jst"
- Use the
settings
argument to pass the template settings used when precompiling templates.
lodash settings="{interpolate:/\\{\\{([\\s\\S]+?)\\}\\}/g}"
- Use the
moduleId
argument 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 csp
or mobile
, 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 debug output-h
,--help
Display help information-m
,--minify
Write only the minified output-o
,--output
Write output to a given path/filename-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
).
=======
A utility library delivering consistency, customization, performance, & extras.
-
Modern builds perfect for newer browsers/environments:
Development & Production -
Compatibility builds for older environment support too:
Development & Production -
Underscore builds to use as a drop-in replacement:
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, & npm packages per method.
There’s plenty of documentation, unit tests, & benchmarks.
For a list of upcoming features, check out our roadmap.
The full changelog for this release is available on our wiki.
- AMD loader support (curl, dojo, requirejs, etc.)
- _(…) 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
- _.createCallback 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 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
cache
of memoized functions - _.merge for a deep _.extend
- _.parseInt for consistent behavior
- _.partialRight for partial application from the right
- _.pull & _.remove for mutating arrays
- _.random supports returning floating-point numbers
- _.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
- Podcasts
- Posts
- Videos
For a list of other community created podcasts, posts, and videos please check out our wiki.
Tested in Chrome 530, Firefox 224, IE 6-10, Opera 9.25~16, Safari 3-6, Node.js 0.6.8-0.10.20, Narwhal 0.3.2, PhantomJS 1.9.2, RingoJS 0.9, & Rhino 1.7RC5.
upstream/master
In browsers:
<script src="lodash.js"></script>
<<<<<<< HEAD Using npm:
npm install lodash
npm install -g lodash
npm link lodash
=======
Using npm
:
npm i --save lodash
>>>>>>> upstream/master
{sudo} npm i -g lodash
npm ln lodash
<<<<<<< HEAD
var _ = require('lodash');
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')._;
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 - Node.js 0.10.8-0.10.11 have bugs preventing minified builds
upstream/master
In Rhino:
load('lodash.js');
In an AMD loader:
require({
<<<<<<< HEAD
'paths': {
'underscore': 'path/to/lodash'
}
=======
'packages': [
{ 'name': 'lodash', 'location': 'path/to/lodash', 'main': 'lodash' }
]
>>>>>>> upstream/master
},
['underscore'], function(_) {
console.log(_.VERSION);
});
<<<<<<< HEAD
- Allow iteration of objects with a
length
property [#799, test] - Fix cross-browser object iteration bugs [#60, #376, test]
- Methods should work on pages with incorrectly shimmed native methods [#7, #742, test]
_.isEmpty
should support jQuery/MooTools DOM query collections [#690, test]_.isObject
should avoid V8 bug #2291 [#605, test]_.keys
should work witharguments
objects cross-browser [#396, test]_.range
should coerce arguments to numbers [#634, #683, test]
- Added
fromIndex
argument to_.contains
- Added
moduleId
build option - Added Closure Compiler “simple” optimizations to the build process
- Added support for strings in
_.max
and_.min
- Added support for ES6 template delimiters to
_.template
- Ensured re-minification of Lo-Dash by third parties avoids Closure Compiler bugs
- Optimized
_.every
,_.find
,_.some
, and_.uniq
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 |
upstream/master
<<<<<<< HEAD
- Kit Cambridge
- Mathias Bynens ======= | | | | |---|---|---| | Blaine Bublitz | Kit Cambridge | Mathias Bynens |
upstream/master