Functions to test/check, filter, find and process/transform objects.
npm install teo
component install gamtiq/teo
jam install teo
bower install teo
jspm install teo
spm install teo
Use dist/teo.js
or dist/teo.min.js
(minified version).
var teo = require("teo");
var teo = require("gamtiq/teo");
...
require(["teo"], function(teo) {
...
});
System.import("teo").then(function(teo) {
...
});
define(["path/to/dist/teo.js"], function(teo) {
...
});
<!-- Use bower_components/teo/dist/teo.js if the library was installed by Bower -->
<script type="text/javascript" src="path/to/dist/teo.js"></script>
<script type="text/javascript">
// teo is available via teo field of window object
...
</script>
teo.isObject(teo); // true
teo.isObject(null); // false
teo.isObject([]); // false
teo.isEmpty(teo); // false
teo.isEmpty([], true); // true
var obj = {};
obj[Symbol("a")] = null;
teo.isEmpty(obj); // false
teo.isEmpty(obj, true); // true
teo.test({}, "true"); // true
teo.test({}, "empty"); // true
teo.test([], "empty"); // true
teo.test(teo, "empty"); // false
teo.test([0], "empty"); // false
teo.test({}, {}); // true
teo.test({a: 1}, {a: 2}); // false
teo.test({a: 1, b: 2, c: 3, d: 4}, {c: 3, a: 1}); // true
teo.test(1, teo.isObject); // false
teo.test("", false); // true
var personList = [
{name: "Adam", age: 27, married: true, children: 1},
{name: "Eva", age: 23, married: true, children: 1},
{name: "Carl", age: 59, married: true, children: 3},
{name: "Daniel", age: 17, married: false, children: 0},
{name: "Gloria", age: 28, married: false, children: 1},
{name: "Viola", age: 35, married: true, children: 4},
{name: "Leonardo", age: 61, married: false, children: 1},
{name: "Patricia", age: 44, married: false, children: 2}
];
teo.filterList([0, "", true, "ret"], "true"); // [true, "ret"]
teo.filterList([3, -4, 2, 10, 7, -9, 5], function(n) {return n >= 3;}, {count: true}); // 4
teo.filterList(personList,
function(person) {return person.age > 30;},
{transform: function(person) {return person.name;}}); // ["Carl", "Viola", "Leonardo", "Patricia"]
teo.findItemIndex(personList, {married: false, children: 1}); // 4
teo.findItem(personList, function(person) {return person.age > 30 && ! person.married;}); // {name: "Leonardo", age: 61, married: false, children: 1}
teo.map({a: 1, b: 2, c: null, d: "delta", e: null, f: undefined},
function(context) {return false;},
{filter: {value: null}}); // {a: 1, b: 2, c: false, d: "delta", e: false, f: undefined}
teo.map({a5: 1, b3: "center", c5: null, d: "delta", e8: -5, field9: 99, g99: -38},
null,
{
rename: function(context) {
var sField = context.field,
match = sField.match(/^\w\d+$/);
return typeof context.value === "number" && match
? "n_" + match[0]
: sField;
}
}); // {n_a5: 1, b3: "center", c5: null, d: "delta", n_e8: -5, field9: 99, n_g99: -38}
function convert(context) {
var value = context.value,
bNoValue = value == null,
sType = typeof value;
if (context.test) {
return bNoValue || sType === "object" || (sType === "string" && /^-?\d+$/.test(value));
}
else {
return bNoValue
? 0
: Number(value);
}
}
teo.map({
a: "abc",
b: "25",
c: {
d: null,
e: "eclipse",
f: {
g: undefined,
h: "-59",
i: "JS 2015"
}
}
},
convert,
{filter: convert, recursion: true});
// returns
// {
// a: "abc",
// b: 25,
// c: {
// d: 0,
// e: "eclipse",
// f: {
// g: 0,
// h: -59,
// i: "JS 2015"
// }
// }
// }
See tests for additional examples.
Check whether value is real object (not array nor function).
Check whether object do not contain any fields.
Check whether object conforms to specified condition/filter.
filterList(list: Array, filter: Object | Function | Array | String, [settings: Object]): Array | Integer
Form new array containing elements from the source array which conform to the given condition (filter) or calculate quantity of such elements.
Return the index of the first element in the array that conforms to the given condition (filter).
Return the first element in the array that conforms to the given condition (filter).
Execute the specified action for fields of the object and return the object containing results of processing.
See doc
folder for details.
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.
Copyright (c) 2014-2015 Denis Sikuler
Licensed under the MIT license.