xtnd

Utility for arrays and objects

xtnd

Extra methods for underscore and lodash

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

Extends any object with src

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

Returns all object's keys

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

Returns all object's values

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

Makes array from any value.

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

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}} 

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(valiorig) {
  return false;
});

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

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

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

Creates a deep copy of the src.

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

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

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'} 

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();  // true