1
0
mirror of https://github.com/dzeiocom/libs.git synced 2025-06-06 08:19:53 +00:00

Added index to objectMap and objectLoop functions

Signed-off-by: Florian BOUILLON <florian.bouillon@delta-wings.net>
This commit is contained in:
Florian Bouillon 2021-05-21 16:20:57 +02:00
parent a32adbd796
commit 1c87c5c207

View File

@ -5,10 +5,13 @@
* @param obj the object to remap
* @param fn the function to run for each key: value pairs
*/
export function objectMap<T = any, J = any>(obj: Record<string, T>, fn: (value: T, key: string) => J): Array<J> {
export function objectMap<T = any, J = any>(
obj: Record<string, T>,
fn: (value: T, key: string, index: number) => J
): Array<J> {
const list: Array<J> = []
objectLoop(obj, (item, key) => {
list.push(fn(item, key))
objectLoop(obj, (item, key, index) => {
list.push(fn(item, key, index))
})
return list
}
@ -18,10 +21,14 @@ export function objectMap<T = any, J = any>(obj: Record<string, T>, fn: (value:
* @param obj the object to loop through
* @param fn the function to run for each childs
*/
export function objectLoop<T = any>(obj: Record<string, T>, fn: (value: T, key: string) => boolean | void): boolean {
export function objectLoop<T = any>(
obj: Record<string, T>,
fn: (value: T, key: string, index: number) => boolean | void
): boolean {
const keys = objectKeys(obj)
for (const key of keys) {
const stop = fn(obj[key], key)
for (let index = 0; index < keys.length; index++) {
const key = keys[index]
const stop = fn(obj[key], key, index)
if (stop === false) {
return false
}