@coditory/jsdeep

1.0.5 • Public • Published

JSDeep - deep operations on json objects

Travis Build Coverage NPM Version NPM Downloads

A library that contains basic operations on nested json structures.

Demo page

Features

  • Provides operations to manipulate json structures.
  • Uses a umd format so works everywhere.

Operations

Deep get

Get a nested property from an object.

import { deepGet } from 'jsdeep';

const obj = { x: { y: { z: 123 } } };
console.log(deepGet(obj, 'x.y.z'));
// Output: 123
console.log(deepGet(obj, ['x', 'y', 'z']));
// Output: 123

Deep set

Set a nested property in an object.

import { deepSet } from 'jsdeep';

console.log(deepSet({}, 'x.y.z', 123));
// Output: { x: { y: { z: 123 } } }
console.log(deepSet({}, ['x', 'y', 'z'], 123));
// Output: { x: { y: { z: 123 } } }
console.log(deepSet({ a: 'a' }, 'x.y.z', 123));
// Output: { a: 'a', x: { y: { z: 123 } } }

Deep exist

Deep check for a json property.

import { deepExists } from 'jsdeep';

const obj = { x: { y: { z: 123 } } };
console.log(deepExists(obj, 'x.y.z'));
// Output: true
console.log(deepExists(obj, ['x', 'y', 'z']));
// Output: true
console.log(deepExists(obj, 'x.y.y'));
// Output: false

Deep equal

Deep comparison.

import { deepEqual } from 'jsdeep';

const a = { x: { y: { z: 123 } } };
const b = { x: { y: { z: 123 } } };
const c = { x: { y: { z: 1234 } } };
console.log(deepEqual(a, b));
// Output: true
console.log(deepEqual(a, c));
// Output: false
console.log(deepEqual(a, b, c));
// Output: false

Deep copy

Copy object deeply.

import { deepCopy } from 'jsdeep';

const obj = { x: { y: { z: true } } };
const copy = deepCopy(obj);
console.log(copy);
// Output: { x: { y: { z: true } } }
console.log(obj.x !== copy.x);
// Output: true

Deep merge

Deeply merge objects.

import { deepMerge } from 'jsdeep';

const obj1 = { x: 'x1', y: 'y1', z: 'z1' };
const obj2 = { x: 'x2', y: 'y2' };
const obj3 = { x: 'x3' };
const merged = deepMerge(obj1, obj2, obj3);
console.log(merged);
// Output: { x: 'x1', y: 'y2', z: 'z3' }
console.log(obj1);
// Output: { x: 'x1', y: 'y1', z: 'z1' }

Deep freeze

Freeze object deeply.

import { deepFreeze } from 'jsdeep';

const obj = { x: { y: { z: true } } };
const frozen = deepFreeze(obj);
console.log(frozen);
// Output: { x: { y: { z: true } } }
frozen.x.y.z = false;
console.log(frozen);
// Output: { x: { y: { z: true } } }

Package Sidebar

Install

npm i @coditory/jsdeep

Weekly Downloads

3

Version

1.0.5

License

WTFPL

Unpacked Size

50.2 kB

Total Files

15

Last publish

Collaborators

  • mendlik