/xtnd

Extra methods for underscore and lodash

Primary LanguageJavaScript

build status

xtnd

Extra methods for underscore and lodash

Installation

npm install xtnd
bower install xtnd

Usage

var xtnd = require('xtnd');
<script src="./xtnd/index.js"></script>

Api

xtnd(dest, src, ...)

Extends any object with src

var a = xtnd({}, {a: 1});  // {a: 1}

xtnd.keys(any)

Returns all object's keys

function f() {}
f.a = 1; f.b = 2;
xtnd.keys(f);               // ['a', 'b']
xtnd.keys({a: 1, b: 2});    // ['a', 'b']
xtnd.keys([1, 2]);          // []

xtnd.values(any)

Returns all object's values

xtnd.values([1, 2]);         // [1, 2]
xtnd.values({a: 1, b: 2});   // [1, 2]

xtnd.array(any)

Makes array from any value.

xtnd.array([1]);        // [1]
xtnd.array({a: 1});     // [{a: 1}]
xtnd.array(arguments);  // converts to array
xtnd.array(undefined);  // []
xtnd.array(null);       // [null]
xtnd.array(123);        // [123]
xtnd.array('a');        // ['a']

xtnd.hash(array, key)

Creates object from array of objects. Skips objects withou key.

xtnd.hash([{a: 1, b: 2}, {a: 3, b: 4}], 'a');   // {1: {a: 1, b: 2}, 3: {a: 3, b: 4}}

xtnd.each(list, function(val, i, orig) {})

Like any other each can iterate through arrays and objects. You can return false from callback and it will stop iteration.

xtnd.each(list, function(val, i, orig) {
  return false;
});

xtnd.map(list, function(val, i, orig) {})

Can map not only arrays but also objects. You can return undefined from callback to skip val.

var src = {a: 1, b: 2, c: 3};
var res = xtnd.map(src, function(val, i, orig) {
  if (val % 2) {
    return val + 4;
  }
});
// res === {a: 5, c: 7}

xtnd.filter(list, function(val, i, orig) {})

Like a map, looks through each value in the list, returning a list of all the values that pass a callback truth test.

xtnd.clone(src)

Creates a deep copy of the src.

xtnd.find(list, function(val, i, orig) {})

For array or object returns first matched (truthy-value returned) by callback val or undefined. It stops iterating after val returned.

var res = xtnd.find([2, 3, 4, 5], function(val, i, orig) {
  return val % 2;  
});
// res === 3

xtnd.param(str, eq, sp)

Converts URL params into object

xtnd.param('a=1&b=2')               // {a: '1', b: '1'}
xtnd.param('a:1|b:2', ':', '|')     // {a: '1', b: '2'}

xtnd.is<Type>

Strong type checkers.

xtnd.isNull(null);            // true
xtnd.isNull({});              // false

xtnd.isArray([1, 2]);         // true
xtnd.isObject([1, 2]);        // false

xtnd.isObject({a: 1});        // true
xtnd.isArguments(arguments);  // true
xtnd.isUndefined(undefined);  // true