osm.js

1.3.0 • Public • Published

Osm.js

Commitizen friendly Build Status

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) => {
  // your code here
});

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({}); //true
osm.isObject(''); //false
osm.isObject(0); //false
osm.isObject(null); //false
osm.isObject(undefined); //false
osm.isObject(NaN); //false

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); //{One: 'One', Two: 'Two', Three: 3};

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']); //returns {Jane: 1}

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); //returns 'arrayVal'
osm.findKeyByValue(false, obj); //returns 'boolean'
osm.findKeyByValue('test', obj); //returns 'string'
osm.findKeyByValue([null, obj); //returns 'nullVal'
osm.findKeyByValue(undefined, obj); //returns 'notDefined'
osm.findKeyByValue(NaN, obj); //returns undefined
osm.findKeyByValue(new Date('2016-01-01'), obj); //returns dateVal

Readme

Keywords

Package Sidebar

Install

npm i osm.js

Weekly Downloads

1

Version

1.3.0

License

MIT

Last publish

Collaborators

  • watan.cp