jsdeep
v1.4.0
Published
Deep operations on json objects
Downloads
6
Readme
JSDeep - deep operations on json objects
A library that contains basic operations on nested json structures.
Features
- Provides operations to manipulate json structures.
- Uses a umd format so works everywhere.
Operations
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;
// Output: TypeError: Cannot assign to read only property 'z'
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 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