Skip to content

keys

Get all keys from an object deeply

397 bytes

Usage

Given an object, return all of it’s keys and children’s keys deeply as a flat string list.

import * as
import _
_
from 'radashi'
const
const ra: {
name: string;
power: number;
friend: {
name: string;
power: number;
};
enemies: {
name: string;
power: number;
}[];
}
ra
= {
name: string
name
: 'ra',
power: number
power
: 100,
friend: {
name: string;
power: number;
}
friend
: {
name: string
name
: 'loki',
power: number
power
: 80,
},
enemies: {
name: string;
power: number;
}[]
enemies
: [
{
name: string
name
: 'hathor',
power: number
power
: 12,
},
],
}
import _
_
.
function keys(value: object): string[]
export keys

Get a string list of all key names that exist in an object (deep).

@seehttps://radashi.js.org/reference/object/keys

@example

keys({ name: 'ra' }) // ['name']
keys({ name: 'ra', children: [{ name: 'hathor' }] })
// ['name', 'children.0.name']

@version12.1.0

keys
(
const ra: {
name: string;
power: number;
friend: {
name: string;
power: number;
};
enemies: {
name: string;
power: number;
}[];
}
ra
)
// => [
// 'name',
// 'power',
// 'friend.name',
// 'friend.power',
// 'enemies.0.name',
// 'enemies.0.power'
// ]

This is a function you might like to use with get, which dynamically looks up values in an object given a string path. Using the two together you could do something like flatten a deep object.

import * as _ from 'radashi'
_.objectify(
_.keys(ra),
key => key,
key => _.get(ra, key),
)
// => {
// 'name': 'ra'
// 'power': 100
// 'friend.name': 'loki'
// 'friend.power': 80
// 'enemies.0.name': 'hathor'
// 'enemies.0.power': 12
// }

As of v10.5.0+ you can get this behavior via the crush function