Narcissistic, Perfectly Modest
    Have ideas to improve npm?Join in the discussion! »

    DefinitelyTyped icon, indicating that this package has TypeScript declarations provided by the separate @types/lodash package

    0.3.2 • Public • Published

    Lo-Dash v0.3.2

    A drop-in replacement for Underscore.js, from the devs behind, that delivers performance improvements, 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.


    Dive in

    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 screencasts over Lo-Dash:



    Lo-Dash has been tested in at least Chrome 5-19, Firefox 1.5-13, IE 6-9, Opera 9.25-12, Safari 3.0.4-5.1.3, Node.js 0.4.8-0.6.18, Narwhal 0.3.2, RingoJS 0.8, and Rhino 1.7RC3.

    Custom builds

    Custom builds make it easy to create lightweight versions of Lo-Dash containing only the methods you need. We handle all the method dependency and alias mapping for you.

    • Backbone builds, containing all methods required by Backbone, may be created using the backbone modifier argument.
    node build backbone
    • Mobile builds, with IE bug fixes and method compilation removed, may be created using the mobile modifier argument.
    node build mobile

    Custom builds may be created in three ways:

    1. Use the category argument to pass the categories of methods to include in the build.
      Valid categories are "arrays", "chaining", "collections", "functions", "objects", and "utilities".
    node build category=collections,functions
    node build category="collections, functions"
    1. Use the include argument to pass the names of methods to include in the build.
    node build include=each,filter,map
    node build include="each, filter, map"
    1. Use the exclude argument to pass the names of methods to exclude from the build.
    node build exclude=union,uniq,zip
    node build exclude="union, uniq, zip"

    All arguments, except include and exlcude, may be combined.

    node build backbone mobile category=functions include=pick,uniq
    node build backbone mobile category=utilities exclude=first,last

    Custom builds are saved to lodash.custom.js and lodash.custom.min.js.

    Installation and usage

    In browsers:

    <script src="lodash.js"></script>

    Using npm:

    npm install lodash

    In Node.js and RingoJS v0.8.0+:

    var _ = require('lodash');

    In Narwhal and RingoJS v0.7.0-:

    var _ = require('lodash')._;

    In Rhino:


    In an AMD loader like RequireJS:

      'paths': {
        'underscore': 'path/to/lodash'
    ['underscore'], function(_) {

    Cloning this repo

    To clone this repository including all submodules, using Git 1.6.5 or later:

    git clone --recursive
    cd lodash.js

    For older Git versions, just use:

    git clone
    cd lodash
    git submodule update --init

    Closed Underscore.js issues

    • Allow iteration of objects with a length property [#148, #154, #252, #448, test]
    • Ensure "Arrays" category methods allow falsey array arguments [test]
    • Ensure array-like objects with invalid length properties are treated like regular objects [test, test, test]
    • Ensure _(…) returns passed wrapper instances [test]
    • Ensure _.escape returns an empty string when passed null or undefined [#407, test]
    • Ensure _.groupBy adds values to own, not inherited, properties [test]
    • Ensure _.sortedIndex supports arrays with high length values [test]
    • Ensure _.throttle works when called in tight loops [#502, test]
    • Fix Firefox, IE, Opera, and Safari object iteration bugs [#376, test, test, test, test, test, test]
    • Handle arrays with undefined values correctly in IE < 9 [#601]
    • Methods should work on pages with incorrectly shimmed native methods [#7, test]
    • Register as AMD module, but still export to global [#431, test]
    • _.forEach should be chainable [#142, test]
    • _isNaN(new Number(NaN)) should return true [test]
    • _.reduceRight should pass correct callback arguments when iterating objects [test]
    • _.size should return the length of string values [test]

    Optimized methods (50+)

    • _.bind
    • _.bindAll
    • _.clone
    • _.compact
    • _.contains, _.include
    • _.defaults
    • _.defer
    • _.difference
    • _.each
    • _.escape
    • _.every, _.all
    • _.extend
    • _.filter,
    • _.find, _.detect
    • _.flatten
    • _.forEach, _.each
    • _.functions, _.methods
    • _.groupBy
    • _.indexOf
    • _.intersection
    • _.invoke
    • _.isEmpty
    • _.isEqual
    • _.isFinite
    • _.isObject
    • _.isString
    • _.keys
    • _.lastIndexOf
    •, _.collect
    • _.max
    • _.memoize
    • _.min
    • _.mixin
    • _.pick
    • _.pluck
    • _.reduce, _.foldl, _.inject
    • _.reject
    • _.result
    • _.shuffle
    • _.some, _.any
    • _.sortBy
    • _.sortedIndex
    • _.template
    • _.throttle
    • _.times
    • _.toArray
    • _.union
    • _.uniq, _.unique
    • _.values
    • _.without
    • _.wrap
    • plus all _(…) method wrappers

    Release Notes


    • Deprecated _(…).chain, _.isFinite, _.isNaN, _.isNull, _.isUndefined, _.result, and _.size
    • Ensured _.escape returns an empty string when passed null or undefined
    • Ensured sourceURL support doesn't cause errors in Adobe's JS engine.
    • Fixed regression in generating custom builds
    • Moved _.invoke and _.pluck back to the "Collections" category
    • Moved _.tap to the "Chaining" category

    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.




    npm i [email protected]






    Last publish


    • avatar
    • avatar
    • avatar