Osm.js
A modern JavaScript library which offers utility functions for objects in JavaScript.
Osm.js
follows functional programming paradigms such as immutability & currying.
Osm.js
methods always return a new object rather than mutating the objects passed in. This leads to consistent & predictable behavior.
Usage
Osm.js is exported as a UMD module, which means it can work on both the client & the server.
npm
Installing Osm
via npm
npm install osm.js
Then require/import it in any module
import osm from 'osm.js';
Browser
To use Osm.js
from a browser, download lib/osm.min.js
Then, add it as a script tag to your page
<script src="osm.min.js"></script>
<script>
const scores = {
Jason: 2,
Sam: 3,
Jane: 1
};
const double = (v) => v * 2;
const dbl = osm.map(double, scores);
</script>
Or use an AMD loader such as RequireJS
require(['./osm.min.js'], (osm) => {
});
Documentation
map
osm.map(interatee, obj);
Returns a new object by running obj
through iteratee
.
const scores = {
Jason: 2,
Sam: 3,
Jane: 1
};
const double = (v) => v * 2;
const dbl = osm.map(double, scores);
filter
osm.filter(predicate, obj);
Iterates over an object & returns a new object with all values predicate
returns truthy for. The predicate
is invoked with two arguments: (value, key)
const scores = {
Jason: 2,
Sam: 3,
Jane: 1
};
const predicate = score => score > 1;
const highScores = osm.filter(predicate, scores);
isObject
osm.isObject(value)
Checks if the value
is a plain object
osm.isObject({});
osm.isObject('');
osm.isObject(0);
osm.isObject(null);
osm.isObject(undefined);
osm.isObject(NaN);
clone
osm.clone(obj);
Returns a new object which uses obj
as it's prototype and clones the properties.
extend
osm.extend(objA, objB);
Returns a new object which uses own enumerable properties of source objects objA
& objB
. Sources are applied left to right and objA is not mutated in the process.
const numbers = {One: 1, Two: 2, Three: 3};
const strings = {One: 'One', Two: 'Two'};
osm.extend(numbers, strings);
omit
osm.omit(obj, [keys]);
Returns a new object which doesn't contain the omitted keys
. Keys
must be array.
const scores = {
Jason: 2,
Sam: 3,
Jane: 1
};
osm.omit(scores, ['Jason', 'Sam']);
findKeyByValue
osm.findKeyByValue(val, obj);
Returns the first key which matches the pass value. If no match found, then undefined is returned.
Note: If the val
is NaN
or an object
then undefined
is returned.
const obj = {
'arrayVal': [1, 2, 3],
'boolean': false,
'string': 'test',
'nullVal': null,
'notDefined': undefined,
'notANumber': NaN,
'dateVal': new Date('2016-01-01'),
'secondBool': false
}
osm.findKeyByValue([1,2,3], obj);
osm.findKeyByValue(false, obj);
osm.findKeyByValue('test', obj);
osm.findKeyByValue([null, obj);
osm.findKeyByValue(undefined, obj);
osm.findKeyByValue(NaN, obj);
osm.findKeyByValue(new Date('2016-01-01'), obj);