keys

_.keys(object) source

Retrieve all the names of the object‘s own enumerable properties.

  1. _.keys({one: 1, two: 2, three: 3});
  2. => ["one", "two", "three"]

allKeys

_.allKeys(object) source

Retrieve all the names of object‘s own and inherited properties.

  1. function Stooge(name) {
  2. this.name = name;
  3. }
  4. Stooge.prototype.silly = true;
  5. _.allKeys(new Stooge("Moe"));
  6. => ["name", "silly"]

values

_.values(object) source

Return all of the values of the object‘s own properties.

  1. _.values({one: 1, two: 2, three: 3});
  2. => [1, 2, 3]

mapObject

_.mapObject(object, iteratee, [context]) source

Like map, but for objects. Transform the value of each property in turn.

  1. _.mapObject({start: 5, end: 12}, function(val, key) {
  2. return val + 5;
  3. });
  4. => {start: 10, end: 17}

pairs

_.pairs(object) source

Convert an object into a list of [key, value] pairs. The opposite of object.

  1. _.pairs({one: 1, two: 2, three: 3});
  2. => [["one", 1], ["two", 2], ["three", 3]]

invert

_.invert(object) source

Returns a copy of the object where the keys have become the values and the values the keys. For this to work, all of your object’s values should be unique and string serializable.

  1. _.invert({Moe: "Moses", Larry: "Louis", Curly: "Jerome"});
  2. => {Moses: "Moe", Louis: "Larry", Jerome: "Curly"};

create

_.create(prototype, props) source

Creates a new object with the given prototype, optionally attaching props as own properties. Basically, Object.create, but without all of the property descriptor jazz.

  1. var moe = _.create(Stooge.prototype, {name: "Moe"});

functions

_.functions(object) Alias: methods source

Returns a sorted list of the names of every method in an object — that is to say, the name of every function property of the object.

  1. _.functions(_);
  2. => ["all", "any", "bind", "bindAll", "clone", "compact", "compose" ...

findKey

_.findKey(object, predicate, [context]) source

Similar to _.findIndex but for keys in objects. Returns the key where the predicate truth test passes or undefined. predicate is transformed through iteratee to facilitate shorthand syntaxes.

extend

_.extend(destination, *sources) source

Shallowly copy all of the properties in the source objects over to the destination object, and return the destination object. Any nested objects or arrays will be copied by reference, not duplicated. It’s in-order, so the last source will override properties of the same name in previous arguments.

  1. _.extend({name: 'moe'}, {age: 50});
  2. => {name: 'moe', age: 50}

extendOwn

_.extendOwn(destination, *sources) Alias: assign source

Like extend, but only copies own properties over to the destination object.

pick

_.pick(object, *keys) source

Return a copy of the object, filtered to only have values for the allowed keys (or array of valid keys). Alternatively accepts a predicate indicating which keys to pick.

  1. _.pick({name: 'moe', age: 50, userid: 'moe1'}, 'name', 'age');
  2. => {name: 'moe', age: 50}
  3. _.pick({name: 'moe', age: 50, userid: 'moe1'}, function(value, key, object) {
  4. return _.isNumber(value);
  5. });
  6. => {age: 50}

omit

_.omit(object, *keys) source

Return a copy of the object, filtered to omit the disallowed keys (or array of keys). Alternatively accepts a predicate indicating which keys to omit.

  1. _.omit({name: 'moe', age: 50, userid: 'moe1'}, 'userid');
  2. => {name: 'moe', age: 50}
  3. _.omit({name: 'moe', age: 50, userid: 'moe1'}, function(value, key, object) {
  4. return _.isNumber(value);
  5. });
  6. => {name: 'moe', userid: 'moe1'}

defaults

_.defaults(object, *defaults) source

Returns object after filling in its undefined properties with the first value present in the following list of defaults objects.

  1. var iceCream = {flavor: "chocolate"};
  2. _.defaults(iceCream, {flavor: "vanilla", sprinkles: "lots"});
  3. => {flavor: "chocolate", sprinkles: "lots"}

clone

_.clone(object) source

Create a shallow-copied clone of the provided plain object. Any nested objects or arrays will be copied by reference, not duplicated.

  1. _.clone({name: 'moe'});
  2. => {name: 'moe'};

tap

_.tap(object, interceptor) source

Invokes interceptor with the object, and then returns object. The primary purpose of this method is to “tap into” a method chain, in order to perform operations on intermediate results within the chain.

  1. _.chain([1,2,3,200])
  2. .filter(function(num) { return num % 2 == 0; })
  3. .tap(alert)
  4. .map(function(num) { return num * num })
  5. .value();
  6. => // [2, 200] (alerted)
  7. => [4, 40000]

toPath

_.toPath(path) source

Ensures that path is an array. If path is a string, it is wrapped in a single-element array; if it is an array already, it is returned unmodified.

  1. _.toPath('key');
  2. => ['key']
  3. _.toPath(['a', 0, 'b']);
  4. => ['a', 0, 'b'] // (same array)

_.toPath is used internally in has, get, invoke, property, propertyOf and result, as well as in iteratee and all functions that depend on it, in order to normalize deep property paths. You can override _.toPath if you want to customize this behavior, for example to enable Lodash-like string path shorthands. Be advised that altering _.toPath will unavoidably cause some keys to become unreachable; override at your own risk.

  1. // Support dotted path shorthands.
  2. var originalToPath = _.toPath;
  3. _.mixin({
  4. toPath: function(path) {
  5. return _.isString(path) ? path.split('.') : originalToPath(path);
  6. }
  7. });
  8. _.get({a: [{b: 5}]}, 'a.0.b');
  9. => 5

get

_.get(object, path, [default]) source

Returns the specified property of object. path may be specified as a simple key, or as an array of object keys or array indexes, for deep property fetching. If the property does not exist or is undefined, the optional default is returned.

  1. _.get({a: 10}, 'a');
  2. => 10
  3. _.get({a: [{b: 2}]}, ['a', 0, 'b']);
  4. => 2
  5. _.get({a: 10}, 'b', 100);
  6. => 100

has

_.has(object, key) source

Does the object contain the given key? Identical to object.hasOwnProperty(key), but uses a safe reference to the hasOwnProperty function, in case it’s been overridden accidentally.

  1. _.has({a: 1, b: 2, c: 3}, "b");
  2. => true

property

_.property(path) source

Returns a function that will return the specified property of any passed-in object. path may be specified as a simple key, or as an array of object keys or array indexes, for deep property fetching.

  1. var stooge = {name: 'moe'};
  2. 'moe' === _.property('name')(stooge);
  3. => true
  4. var stooges = {moe: {fears: {worst: 'Spiders'}}, curly: {fears: {worst: 'Moe'}}};
  5. var curlysWorstFear = _.property(['curly', 'fears', 'worst']);
  6. curlysWorstFear(stooges);
  7. => 'Moe'

propertyOf

_.propertyOf(object) source

Inverse of _.property. Takes an object and returns a function which will return the value of a provided property.

  1. var stooge = {name: 'moe'};
  2. _.propertyOf(stooge)('name');
  3. => 'moe'

matcher

_.matcher(attrs) Alias: matches source

Returns a predicate function that will tell you if a passed in object contains all of the key/value properties present in attrs.

  1. var ready = _.matcher({selected: true, visible: true});
  2. var readyToGoList = _.filter(list, ready);

isEqual

_.isEqual(object, other) source

Performs an optimized deep comparison between the two objects, to determine if they should be considered equal.

  1. var stooge = {name: 'moe', luckyNumbers: [13, 27, 34]};
  2. var clone = {name: 'moe', luckyNumbers: [13, 27, 34]};
  3. stooge == clone;
  4. => false
  5. _.isEqual(stooge, clone);
  6. => true

isMatch

_.isMatch(object, properties) source

Tells you if the keys and values in properties are contained in object.

  1. var stooge = {name: 'moe', age: 32};
  2. _.isMatch(stooge, {age: 32});
  3. => true

isEmpty

_.isEmpty(collection) source

Returns true if collection has no elements. For strings and array-like objects _.isEmpty checks if the length property is 0. For other objects, it returns true if the object has no enumerable own-properties. Note that primitive numbers, booleans and symbols are always empty by this definition.

  1. _.isEmpty([1, 2, 3]);
  2. => false
  3. _.isEmpty({});
  4. => true

isElement

_.isElement(object) source

Returns true if object is a DOM element.

  1. _.isElement(jQuery('body')[0]);
  2. => true

isArray

_.isArray(object) source

Returns true if object is an Array.

  1. (function(){ return _.isArray(arguments); })();
  2. => false
  3. _.isArray([1,2,3]);
  4. => true

isObject

_.isObject(value) source

Returns true if value is an Object. Note that JavaScript arrays and functions are objects, while (normal) strings and numbers are not.

  1. _.isObject({});
  2. => true
  3. _.isObject(1);
  4. => false

isArguments

_.isArguments(object) source

Returns true if object is an Arguments object.

  1. (function(){ return _.isArguments(arguments); })(1, 2, 3);
  2. => true
  3. _.isArguments([1,2,3]);
  4. => false

isFunction

_.isFunction(object) source

Returns true if object is a Function.

  1. _.isFunction(alert);
  2. => true

isString

_.isString(object) source

Returns true if object is a String.

  1. _.isString("moe");
  2. => true

isNumber

_.isNumber(object) source

Returns true if object is a Number (including NaN).

  1. _.isNumber(8.4 * 5);
  2. => true

isFinite

_.isFinite(object) source

Returns true if object is a finite Number.

  1. _.isFinite(-101);
  2. => true
  3. _.isFinite(-Infinity);
  4. => false

isBoolean

_.isBoolean(object) source

Returns true if object is either true or false.

  1. _.isBoolean(null);
  2. => false

isDate

_.isDate(object) source

Returns true if object is a Date.

  1. _.isDate(new Date());
  2. => true

isRegExp

_.isRegExp(object) source

Returns true if object is a RegExp.

  1. _.isRegExp(/moe/);
  2. => true

isError

_.isError(object) source

Returns true if object inherits from an Error.

  1. try {
  2. throw new TypeError("Example");
  3. } catch (o_O) {
  4. _.isError(o_O);
  5. }
  6. => true

isSymbol

_.isSymbol(object) source

Returns true if object is a Symbol.

  1. _.isSymbol(Symbol());
  2. => true

isMap

_.isMap(object) source

Returns true if object is a Map.

  1. _.isMap(new Map());
  2. => true

isWeakMap

_.isWeakMap(object) source

Returns true if object is a WeakMap.

  1. _.isWeakMap(new WeakMap());
  2. => true

isSet

_.isSet(object) source

Returns true if object is a Set.

  1. _.isSet(new Set());
  2. => true

isWeakSet

_.isWeakSet(object) source

Returns true if object is a WeakSet.

  1. _.isWeakSet(WeakSet());
  2. => true

isArrayBuffer

_.isArrayBuffer(object) source

Returns true if object is an ArrayBuffer.

  1. _.isArrayBuffer(new ArrayBuffer(8));
  2. => true

isDataView

_.isDataView(object) source

Returns true if object is a DataView.

  1. _.isDataView(new DataView(new ArrayBuffer(8)));
  2. => true

isTypedArray

_.isTypedArray(object) source

Returns true if object is a TypedArray.

  1. _.isTypedArray(new Int8Array(8));
  2. => true

isNaN

_.isNaN(object) source

Returns true if object is NaN.

Note: this is not the same as the native isNaN function, which will also return true for many other not-number values, such as undefined.

  1. _.isNaN(NaN);
  2. => true
  3. isNaN(undefined);
  4. => true
  5. _.isNaN(undefined);
  6. => false

isNull

_.isNull(object) source

Returns true if the value of object is null.

  1. _.isNull(null);
  2. => true
  3. _.isNull(undefined);
  4. => false

isUndefined

_.isUndefined(value) source

Returns true if value is undefined.

  1. _.isUndefined(window.missingVariable);
  2. => true