HTML and CSS Reference
Some of the most common and helpful methods are documented in the following list.
• _.each(list, callback, [context]) : Calls back each element of the list as an argument to
the callback. It uses the native forEach in the browsers that support it. Notice _.each takes an addi-
tional “context” object that is bound to this inside the callback.
• _.map(list, callback, [context]) : Similar to _.each , except it takes the return values
from the callback method and returns a new array.
• _.find(list, callback, [context]) : Returns the first item in the list for which the callback
function returns true . It's useful for finding an element in a list based on some arbitrary criteria func-
• _.filter(list, callback, [context]) : Similar to _.find except that it returns an array
of all the items for which the callback returns true .
• _.without(array, [*values]) : Returns a new array without any instances of values removed;
useful, for example, for removing dead sprites from a list.
• _.uniq(array, [isSorted], [iterator]) : _.uniq returns a copy of an array with any
duplicate elements removed. If the array happens to be in a sorted state, pass true to isSorted to
Taken together, these methods make working with lists of objects much more concise.
Using Utility Functions
Underscore also provides a number of general utility functions that can make your life easier.
• _.bindAll(object, [*methodNames]) : Modifies any calls to methodNames on object so
that the context is always object . This means you can pass methods to jQuery event handlers, for ex-
ample, without needing to worry about the context of this .
• _.keys(object) / _.values(object) : Returns all of an object's keys or values.
• _.extend(destination, *sources) : Copies all the properties from a list of source objects
over to the destination, overwriting any existing properties.
• _.is[ObjectType] : Underscore.js provides a good number of methods of the form _.is[Ob-
built-in type checking methods. The methods Underscore provides are _.isEqual , _.isEmpty ,
_.isElement, _.isArray , _.isFunction , _.isString , _ isNumber , _.isBoolean ,
_.isNaN , _.isNull , and _.isUndefined. All the _.is[ObjectType] methods are relatively
self-explanatory: They each check the type of the object passed in and return true or false . They
and faking polymorphism by having methods behave differently depending on what is passed into them.
• _.uniqueId([prefix]) : Generates a globally unique identifier for client-side DOM elements or
models. This is useful because you often want to add unique ID attributes to elements you add to the
These utility methods, particularly _.extend are used frequently in the topic.