object-fn-ts
v3.0.0
Published
map, filter, reduce and other array methods but for objects
Downloads
8
Maintainers
Readme
object-fn-ts
map, filter, reduce and other array methods but for objects
Contents
objectMap
Signature: <InputType extends object, OutputType extends object>( object: InputType, fn: ( key: keyof InputType, value: any, index: number, entries: [string, any][] ) => any ) => OutputType
Example:
const obj = {
a: '1',
b: '2'
}
objectMap<typeof obj, {[key in keyof typeof obj]: number}>(obj, (_, val) => parseInt(val)) // 👉 { a: 1, b: 2 }
objectFilter
Signature: <InputType extends object>( object: InputType, fn: ( key: keyof InputType, value: any, index: number, entries: [string, any][] ) => boolean ) => Partial
Example:
const obj = {
a: '1',
b: '2',
c: null
}
objectFilter(obj, (key, val) => key !== 'a' && val !== null && val !== undefined) // 👉 { b: '2 }
objectReduce
Signature: <InputType extends object, OutputType extends object>( object: InputType, fn: ( previousValue: OutputType, key: string, value: any, index: number, entries: [string, any][] ) => any, initialValue: OutputType ) => OutputType
Example:
const obj = {
a: 1,
b: 2,
c: 3
}
objectReduce(obj, (prev, key, val) => ({ sum: prev.sum + val }), { sum: 0 }) // 👉 { sum: 6 }
objectSome
Signature: <InputType extends object>( object: InputType, fn: ( key: keyof InputType, value: any, index: number, entries: [string, any][] ) => boolean ) => boolean
Example:
const obj1 = {
a: true,
b: false,
c: false
}
const obj2 = {
a: false,
b: false,
c: false
}
objectSome(obj1, (_, val) => !!val) // 👉 true
objectSome(obj2, (_, val) => !!val) // 👉 false
objectEvery
Signature: <InputType extends object>( object: InputType, fn: ( key: keyof InputType, value: any, index: number, entries: [string, any][] ) => boolean ) => boolean
Example:
const obj1 = {
a: true,
b: false,
c: false
}
const obj2 = {
a: false,
b: false,
c: false
}
objectEvery(obj1, (_, val) => !val) // 👉 false
objectEvery(obj2, (_, val) => !val) // 👉 true
objectLength
Signature: (baseObject: object) => number
Example:
const obj = {
a: 'a',
b: 'b',
}
const obj2 = {
a: 'a',
b: 'b',
c: 'c'
}
objectLength(obj) // 👉 2
objectLength(obj2) // 👉 3
objectIs
Signature: (val: any) => boolean
Example:
const o = {
a: 'a'
}
const a = ['a']
objectIs(o) // 👉 true
objectIs(a) // 👉 false
objectDepth
Signature: (o: object) => number
Example:
const a = {
a: '1'
}
const b = {
a: {
b: '2'
}
}
objectDepth(a) // 👉 1
objectDepth(b) // 👉 2
objectDeepEntries
Signature: (o: object) => any[]
Example:
const t = {
a: 'a',
b: {
c: 'c'
}
}
objectDeepEntries(t) // 👉 [ ['a', 'a'], ['b', [ ['c', 'c'] ] ] ]
objectFromDeepEntries
Signature: (arr: any[]) => any
Example:
const t = [
['a', 'a'],
['b', [
['c', 'c']
]]
]
fromDeepEntries(t) // 👉 { a: 'a', b: { c: 'c' } }
CHANGE LOG
- v3.0.0 | 2023-06-08:
- Types update: use
unkown
instead ofany
; properly inver values and entries param for param function when possible; fixing max-depth counter
- Types update: use
- v2.1.0 | 2023-01-10 :
- Export
objectReduce
fn
- Export
- v2.0.0 | 2022-10-12 :
- Change folder structure (rm lib folder from release)