@satyajit_me/deep-object-utils
v1.0.1
Published
Deep merge, clone, diff, and path-based access for nested objects
Maintainers
Readme
Deep Object Utils
Deep merge, clone, diff, and path-based access for nested objects.
Installation
npm install deep-object-utilsUsage
import { deepMerge, get, set, flatten } from 'deep-object-utils';API
Cloning & Merging
// Deep clone
deepClone({ a: { b: 1 } })
// Deep merge (returns new object)
deepMerge({ a: 1 }, { b: 2 }, { c: 3 })
// { a: 1, b: 2, c: 3 }Path-based Access
const obj = { user: { profile: { name: 'John' } } };
// Get nested value
get(obj, 'user.profile.name') // 'John'
get(obj, 'user.missing', 'default') // 'default'
// Set nested value (returns new object)
set(obj, 'user.profile.age', 30)
// Check if path exists
has(obj, 'user.profile.name') // true
// Delete at path
unset(obj, 'user.profile.name')
// Array notation works too
get({ arr: [1, 2, 3] }, 'arr[1]') // 2Flatten & Unflatten
// Flatten nested object
flatten({ a: { b: { c: 1 } } })
// { 'a.b.c': 1 }
// Unflatten to nested
unflatten({ 'a.b.c': 1 })
// { a: { b: { c: 1 } } }Comparison
// Get differences
diff({ a: 1, b: 2 }, { a: 1, c: 3 })
// { added: { c: 3 }, removed: { b: 2 }, changed: {} }
// Deep equality check
isEqual({ a: { b: 1 } }, { a: { b: 1 } }) // truePick & Omit
pick({ a: 1, b: 2, c: 3 }, ['a', 'c']) // { a: 1, c: 3 }
omit({ a: 1, b: 2, c: 3 }, ['b']) // { a: 1, c: 3 }License
MIT
