adam
Functions to create, process and test objects.
Installation
Node
npm install adam
bower install adam
AMD, <script>
Use dist/adam.js
or dist/adam.min.js
(minified version).
Usage ↑
Node
var adam = require("adam");
AMD
define(["path/to/dist/adam.js"], function(adam) {
...
});
Bower, <script>
<script type="text/javascript" src="path/to/dist/adam.js"></script>
<script type="text/javascript">
...
</script>
Examples ↑
function inc(data) {
return ++data.value;
}
var obj = {a: 1, b: 2, c: 3, d: 4, e: 5},
s1 = Symbol("s1"),
s2 = Symbol("s2"),
proto = {a: 1},
obj2 = Object.create(proto);
proto[s1] = "s1";
obj2.b = 2;
obj2[s2] = null;
obj2.c = "str";
obj2.d = 0;
adam.getPropertySymbols(obj2);
adam.getClass([8]);
adam.getType(null);
adam.isKindOf(17, "integer");
adam.isKindOf(NaN, "!number");
adam.isKindOf(".321e+2", "numeric");
adam.checkField(obj, "c", ["positive", "odd"]);
adam.checkField(obj, "b", ["real", /^7/], {filterConnect: "or"});
adam.checkValue(-15, ["negative", /5/, {inside: [2, -7, -15, 12, 9]}]);
adam.checkValue("73", [/^\d+$/, {inside: {a: 1, b: "43", c: null}}]);
adam.checkValue("73", [/^\d+$/, {inside: {a: 1, b: "43", c: null}}], {filterConnect: "or"});
adam.getFreeField({a5: 5, a2: 2, a7: 7, a3: 3}, {prefix: "a", startNum: 2});
adam.getSize(obj);
adam.getSize(obj, {filter: "even"});
adam.getSize(obj2, {filter: ["string", "null"], filterConnect: "or"});
adam.isSizeMore(obj, 5);
adam.isSizeMore(obj2, 1, {filter: "string"});
adam.isEmpty({});
adam.getFields(obj);
adam.getFields(obj, {filter: function(value) {return value < 4;}});
adam.getFields(obj, {filter: {field: /^[d-h]/}});
adam.getFields(obj2);
adam.getFields(obj2, {filter: ["string", "false"], filterConnect: "or"});
adam.getFields(obj2, {filter: "number", limit: 2});
adam.getFields(obj2, {filter: {field: "symbol"}})
adam.getValues(obj);
adam.getValues(obj, {filter: {field: /a|c/}});
adam.getValueKey(obj, 3);
adam.fromArray([{id: "a", value: 11}, {id: "b", value: 7}, {id: "c", value: 10}], "id");
adam.select(["negative", "odd"], [null, 4, NaN, 7, false, -2, "", 0, -5, 3, null, -9]);
adam.select(["negative", "odd"], [null, 4, NaN, 8, false, 2, "", 0, 30, 4, false], {filterConnect: "or"});
adam.select(["negative", "odd"], [null, 4, NaN, 8, false, 2, "", 0, 30, 4, false], {filterConnect: "or", defaultValue: -3});
adam.select([{field: /[c-g]/}, "odd"], {a: [3, 5, 2], b: 1, c: 0, d: "-7", e: 4, f: -2, g: -1, h: null, i: -7, j: true, k: -5});
adam.split(obj, ["a", "d"]);
adam.split(obj, null, {filter: "odd"});
adam.split(obj, null, {filter: ["even", /3/], filterConnect: "or"});
adam.remove({a: 1, b: "2", c: 3}, "string");
adam.remove([1, 2, 3, 4, 5], "even");
adam.empty({x: -1, y: 9});
adam.reverse({a: "x", b: "files"});
adam.reverse("eval");
adam.transform("7.381", "integer");
adam.copy(obj, {b: "no", z: "a"});
adam.copy(obj, {b: "no", z: "a"}, {filter: "odd"});
adam.copy(obj, {b: "no", z: "a"}, {filter: "even", transform: inc});
adam.change({a: 1, b: 2, c: 3}, "reverse");
adam.change({a: 10, b: 28, c: -3, d: null, e: "zero = 0"}, "empty", {filter: /0/});
adam.change([1, 2, 3, 4, 5], "reverse", {filter: "even"});
adam.map(obj, "reverse", {filter: "odd"});
adam.map(["1", "2", "3"], "number");
See test/adam.js
for additional examples.
API ↑
change(obj: Object, action: Function | String, [settings: Object]): Object
Change all or filtered fields of object, applying specified action/transformation.
checkField(obj: Object, field: String | Symbol, filter: Any, [settings: Object]): Boolean
Check whether the field of given object corresponds to specified condition(s) or filter(s).
checkValue(value: Any, filter: Any, [settings: Object]): Boolean
Check whether the value corresponds to specified condition(s) or filter(s).
copy(source: Object, target: Object, [settings: Object]): Object
Copy all or filtered fields from source object into target object, applying specified transformation if necessary.
empty(value: Any): Any
Empty the given value.
fromArray(list: Array, [keyField: Function | String], [settings: Object]): Object
Create object (map) from list of objects.
getClass(value: Any): String
Return class of given value (namely value of internal property [[Class]]
).
getFields(obj: Object, [settings: Object]): Array
Return list of all or filtered fields of specified object.
getFreeField(obj: Object, [settings: Object]): String
Return name of first free (absent) field of specified object, that conforms to the following pattern: <prefix><number>
getPropertySymbols(obj: Object): Array
Return list of all symbol property keys for given object including keys from prototype chain.
This function is defined only when Object.getOwnPropertySymbols
is available in JS engine.
Otherwise the value of getPropertySymbols
field is undefined
.
getSize(obj: Object, [settings: Object]): Integer
Return number of all or filtered fields of specified object.
getType(value: Any): String
Return type of given value.
getValueKey(obj: Object, value, [all: Boolean]): Array | String | null
Return the name of field (or list of names) having the specified value in the given object.
getValues(obj: Object, [settings: Object]): Array
Return list of all or filtered field values of specified object.
isEmpty(value: Any): Boolean
Check whether given value is an empty value i.e. null
, undefined
, 0
, empty object, empty array or empty string.
isKindOf(value: Any, kind: String): Boolean
Check whether given value has (or does not have) specified kind (type or class).
isSizeMore(obj: Object, qty: Number, [settings: Object]): Boolean
Check whether number of all or filtered fields of specified object is more than the given value.
map(obj: Object, action: Function | String, [settings: Object]): Object
Create new object containing all or filtered fields of the source object/array,
applying specified action/transformation for field values.
remove(obj: Array | Object, filter: Any, [settings: Object]): Array | Object
Remove filtered fields/elements from specified object/array.
reverse(value: Any): Any
Reverse or negate the given value.
select(filter: Any, from: Any, [settings: Object]): Any
Return the value of the first element/field in the passed array/object that satisfies the specified filter(s).
split(obj: Object, firstObjFields: Array | Object | null, [settings: Object]): Array
Divide given object into 2 parts: the first part includes specified fields, the second part includes all other fields.
transform(value: Any, action: String): Any
Transform the given value applying the specified operation.
See doc
folder for details.
Related projects ↑
Contributing
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.
License
Copyright (c) 2014-2020 Denis Sikuler
Licensed under the MIT license.