Extra methods for underscore and lodash
npm install xtnd
bower install xtnd
var xtnd = require('xtnd');
<script src="./xtnd/index.js"></script>
- xtnd
- xtnd.keys
- xtnd.values
- xtnd.array
- xtnd.hash
- xtnd.each
- xtnd.map
- xtnd.filter
- xtnd.clone
- xtnd.find
- xtnd.param
- xtnd.is<Type>
Extends any object with src
var a = xtnd({}, {a: 1}); // {a: 1}
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]); // []
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(undefined); // []
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(val, i, orig) {
return false;
});
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}
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 undefined
. It stops iterating after val
returned.
var res = xtnd.find([2, 3, 4, 5], function(val, i, orig) {
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(undefined); // true