Object
Object manipulation utilities for getting, setting, and transforming object properties.
Installation
import * as object from '@beerush/utils/global/object'
// or
import { read } from '@beerush/utils/global/object'
Functions
read
Get the value of an object by using a path.
read<T extends object, P extends NestedPath<T>>(
object: T,
path: P,
fallback?: unknown
): NestedPathValue<T, P>
write
Set the value of an object by using a path.
write<T extends object, P extends NestedPath<T>, V extends NestedPathValue<T, P>>(
object: T,
path: P,
value: V
): T
has
Check if an object has a property by using a path.
has<T extends object, P extends NestedPath<T>>(
object: T,
path: P
): boolean
omit
Create a new object with specified properties omitted.
omit<T extends object, K extends keyof T>(
object: T,
keys: K[]
): Omit<T, K>
pick
Create a new object with only specified properties.
pick<T extends object, K extends keyof T>(
object: T,
keys: K[]
): Pick<T, K>
extend
Extend an object with another object's properties.
extend<T extends object, S extends object>(
target: T,
source: S
): T & S
clean
Remove all undefined, null, and empty values from an object.
clean<T extends object>(object: T): T
flatten
Flatten a nested object to a single level object with dot-notation keys.
flatten<T extends object>(
object: T,
prefix?: string
): Record<string, unknown>
unflatten
Convert a flattened object with dot-notation keys back to a nested object.
unflatten<T extends Record<string, unknown>>(
object: T
): object
map
Map over an object's properties and return a new object.
map<T extends object, R>(
object: T,
mapper: (value: T[keyof T], key: keyof T, object: T) => R
): { [K in keyof T]: R }
filter
Filter an object's properties and return a new object.
filter<T extends object>(
object: T,
predicate: (value: T[keyof T], key: keyof T, object: T) => boolean
): Partial<T>
reduce
Reduce an object's properties to a single value.
reduce<T extends object, R>(
object: T,
reducer: (accumulator: R, value: T[keyof T], key: keyof T, object: T) => R,
initialValue: R
): R
keys
Get all keys of an object, including nested paths.
keys<T extends object>(object: T): NestedPath<T>[]
values
Get all values of an object, including nested values.
values<T extends object>(object: T): NestedPathValue<T, NestedPath<T>>[]
entries
Get all key-value pairs of an object, including nested paths and values.
entries<T extends object>(
object: T
): [NestedPath<T>, NestedPathValue<T, NestedPath<T>>][]
clone
Deep clone an object.
clone<T extends object>(object: T): T
merge
Deep merge multiple objects.
merge<T extends object[]>(...objects: T): T
isEmpty
Check if an object is empty.
isEmpty<T extends object>(object: T): boolean
isNotEmpty
Check if an object is not empty.
isNotEmpty<T extends object>(object: T): boolean
Types
NestedPath<T>
- Type for nested object paths using dot notationNestedArrayPath<T>
- Type for nested array paths using dot notationNestedPathValue<T, P>
- Type for values at nested object pathsNestedPaths<T>
- Type for arrays of nested object pathsNestedPathMaps<T>
- Type for mapping nested paths to their values