Skip to content

crush

Flattens a deep object to a single dimension

341 bytes
since v12.1.0

Usage

Flattens a deep object to a single dimension. The deep keys will be converted to a dot notation in the new object.

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,
},
],
}
const
const crushed: {
[x: string]: unknown;
name: string;
power: number;
}
crushed
=
import _
_
.
function crush<{
name: string;
power: number;
friend: {
name: string;
power: number;
};
enemies: {
name: string;
power: number;
}[];
}>(value: {
name: string;
power: number;
friend: {
name: string;
power: number;
};
enemies: {
name: string;
power: number;
}[];
}): {
...;
}

Flattens a deep object to a single dimension, converting the keys to dot notation.

@see ― https://radashi.js.org/reference/object/crush

@example

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

@version ― 12.1.0

crush
(
const ra: {
name: string;
power: number;
friend: {
name: string;
power: number;
};
enemies: {
name: string;
power: number;
}[];
}
ra
)
// {
// name: 'ra',
// power: 100,
// 'friend.name': 'loki',
// 'friend.power': 80,
// 'enemies.0.name': 'hathor',
// 'enemies.0.power': 12
// }

Empty objects and arrays

Empty objects and arrays are preserved as leaf values, so construct can restore them losslessly.

import * as
import _
_
from 'radashi'
const
const crushed: {
[x: string]: unknown;
}
crushed
=
import _
_
.
function crush<{
a: {};
b: never[];
c: {
d: {};
};
}>(value: {
a: {};
b: never[];
c: {
d: {};
};
}): {
[x: string]: unknown;
}

Flattens a deep object to a single dimension, converting the keys to dot notation.

@see ― https://radashi.js.org/reference/object/crush

@example

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

@version ― 12.1.0

crush
({
a: {}
a
: {},
b: never[]
b
: [],
c: {
d: {};
}
c
: {
d: {}
d
: {} } })
// { a: {}, b: [], 'c.d': {} }