Security News
JavaScript Leaders Demand Oracle Release the JavaScript Trademark
In an open letter, JavaScript community leaders urge Oracle to give up the JavaScript trademark, arguing that it has been effectively abandoned through nonuse.
A drop-in replacement for Underscore.js that delivers performance improvements, bug fixes, and additional features.
Lodash is a JavaScript library that provides utility functions for common programming tasks using a functional programming paradigm. It includes functions for manipulating and traversing arrays, objects, and strings, as well as utilities for functions, language, math, number, object, sequence, and utility methods.
Array Manipulation
Lodash provides a rich set of array manipulation functions such as map, filter, find, and sort. The code sample demonstrates sorting an array in ascending order using a custom comparator.
[3, 2, 1].sort(_.compareWith(function(a, b) { return a - b; }))
Object Manipulation
Lodash allows for easy manipulation and traversal of objects. The code sample shows how to assign properties from source objects to a destination object.
_.assign({ 'a': 1 }, { 'b': 2 }, { 'c': 3 })
String Manipulation
Lodash includes functions to manipulate strings, such as converting to different cases, trimming, padding, etc. The code sample demonstrates converting a string to kebab-case.
_.kebabCase('Foo Bar')
Function Utilities
Lodash provides function utilities like debounce and throttle to control function invocation. The code sample shows a debounced function that will only be invoked after 250 milliseconds have passed without it being called again.
_.debounce(function() { console.log('Debounced'); }, 250)
Language Utilities
Lodash includes utilities for deep cloning, merging, and comparing objects. The code sample demonstrates deep cloning an object to ensure nested objects are cloned as well.
_.cloneDeep({ 'a': 1, 'b': { 'c': 2 } })
Underscore is a utility library with similar functionality to Lodash, offering a range of functions for manipulating arrays, objects, and functions. It is generally considered to be the predecessor to Lodash, which provides a superset of Underscore's features with additional performance optimizations.
Ramda is a functional programming library that emphasizes a more functional and composable approach compared to Lodash. It provides similar utilities but focuses on immutability and side-effect free functions, which can lead to a different programming style.
Immutable.js offers a different take on data manipulation by providing persistent immutable data structures. Unlike Lodash, which works with standard JavaScript objects and arrays, Immutable.js uses its own data structures, which can lead to better performance and easier reasoning about state changes in certain applications.
A drop-in replacement* for Underscore.js, from the devs behind jsPerf.com, 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.
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:
thisArg
argumentfromIndex
argumentLo-Dash has been tested in at least Chrome 5-20, Firefox 1.5-13, IE 6-9, Opera 9.25-12, Safari 3.0.4-5.1.7, Node.js 0.4.8-0.8.2, Narwhal 0.3.2, RingoJS 0.8, and Rhino 1.7RC3.
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
modifier argument.lodash backbone
legacy
modifier argument.lodash legacy
mobile
modifier argument.lodash mobile
_.bindAll
, _.extend
, and _.defaults
in strict mode, may be created using the strict
modifier argument.lodash strict
Custom builds may be created in three ways:
category
argument to pass the categories of methods to include in the build.lodash category=collections,functions
lodash category="collections, functions"
exclude
argument to pass the names of methods to exclude from the build.lodash exclude=union,uniq,zip
lodash exclude="union, uniq, zip"
include
argument to pass the names of methods to include in the build.lodash include=each,filter,map
lodash include="each, filter, map"
All arguments, except exclude
with include
and legacy
with mobile
, may be combined.
lodash backbone legacy category=utilities exclude=first,last
lodash backbone mobile strict category=functions include=pick,uniq
The lodash
command-line utility is available when Lo-Dash is installed as a global package (i.e. npm install -g lodash
).
Custom builds are saved to lodash.custom.js
and lodash.custom.min.js
.
In browsers:
<script src="lodash.js"></script>
Using npm:
npm install lodash
npm install -g lodash
In Node.js and RingoJS v0.8.0+:
var _ = require('lodash');
In Narwhal and 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);
});
length
property [#148, #154, #252, #448, #659, test]length
properties are treated like regular objects [test, test, test]array
arguments [test]collection
arguments [#247, #276, #561, test, test, test, test]undefined
values correctly in IE < 9 [#601]_(…)
should return passed wrapper instances [test]_.contains
should work with strings [#667, test]_.escape
should return an empty string when passed null
or undefined
[#407, test]_.forEach
should be chainable [#142, test]_.groupBy
should add values to own, not inherited, properties [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]_.size
shouldn't error on falsey values [#650, test]_.size
should work with arguments
objects cross-browser [#653, test]_.sortedIndex
should support arrays with high length
values [test]_.template
should not augment the options
object [test]_.throttle
should work when called in a loop [#502, test]_.zipObject
should accept less than two arguments [test]_.bind
_.bindAll
_.clone
_.compact
_.contains
, _.include
_.defaults
_.defer
_.difference
_.each
_.escape
_.every
, _.all
_.extend
_.filter
, _.select
_.find
, _.detect
_.flatten
_.forEach
, _.each
_.functions
, _.methods
_.groupBy
_.indexOf
_.intersection
_.invoke
_.isArguments
_.isDate
_.isEmpty
_.isEqual
_.isFinite
_.isFunction
_.isObject
_.isNumber
_.isRegExp
_.isString
_.keys
_.lastIndexOf
_.map
, _.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
_.zip
_(…)
method wrappersstrict
build_.bindAll
, _.extend
, and _.defaults
avoid strict mode errors when attempting to augment read-only properties_.difference
, _.intersection
, and _.without
_.template
regressionbin
and scripts
entries to package.jsonlegacy
build option_.zipObject
_.indexOf
's fromIndex
in _.difference
and _.without
iteratorTemplate
for builds_.bind
in V8_.size
work with falsey values and consistent cross-browser with arguments
objects_.groupBy
and _.sortBy
back to the "Collections" categoryarguments
object from _.range
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.
FAQs
Lodash modular utilities.
The npm package lodash receives a total of 42,997,074 weekly downloads. As such, lodash popularity was classified as popular.
We found that lodash demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
In an open letter, JavaScript community leaders urge Oracle to give up the JavaScript trademark, arguing that it has been effectively abandoned through nonuse.
Security News
The initial version of the Socket Python SDK is now on PyPI, enabling developers to more easily interact with the Socket REST API in Python projects.
Security News
Floating dependency ranges in npm can introduce instability and security risks into your project by allowing unverified or incompatible versions to be installed automatically, leading to unpredictable behavior and potential conflicts.