Skip to content

pluck

Map an array of objects to an array of arrays

136 bytes
since v12.5.0

Usage

Pass in an array of objects and specify one or more keys to extract. The function returns a new array containing the extracted values (as an array of arrays). The input array is never mutated.

import * as
import _
_
from 'radashi'
const
const gods: {
name: string;
power: number;
domain: string;
}[]
gods
= [
{
name: string
name
: 'Ra',
power: number
power
: 100,
domain: string
domain
: 'Sun' },
{
name: string
name
: 'Zeus',
power: number
power
: 98,
domain: string
domain
: 'Lightning' },
{
name: string
name
: 'Loki',
power: number
power
: 72,
domain: string
domain
: 'Tricks' },
]
// Extract single property
const
const names: string[]
names
=
import _
_
.
function pluck<{
name: string;
power: number;
domain: string;
}, "name">(array: readonly {
name: string;
power: number;
domain: string;
}[], mappings: readonly "name"[]): string[] (+1 overload)

Extracts values from an array of objects based on specified mappings. Useful for extracting multiple properties from an array of objects (e.g. for tabular data). Also supports “computed properties” via mapping functions, which can combine and transform values on-the-fly.

  • If mappings are provided, returns an array of arrays where each inner array contains the values extracted by applying each mapping to the corresponding object.
  • If no mappings are provided, returns an array of arrays containing all values of each object.

@seehttps://radashi.js.org/reference/array/pluck

@example

interface God {
name: string;
power: number;
domain: string;
}
const gods: God[] = [
{ name: 'Ra', power: 100, domain: 'Sun' },
{ name: 'Zeus', power: 98, domain: 'Lightning' },
{ name: 'Loki', power: 72, domain: 'Tricks' }
];
// Extract a set of properties
pluck(gods, ['power', 'domain']);
// [[100, 'Sun'], [98, 'Lightning'], [72, 'Tricks']]
// Extract all properties
pluck(gods);
// [['Ra', 100, 'Sun'], ['Zeus', 98, 'Lightning'], ['Loki', 72, 'Tricks']]

@version12.5.0

pluck
(
const gods: {
name: string;
power: number;
domain: string;
}[]
gods
, ['name'])
// => [['Ra'], ['Zeus'], ['Loki']]
// Extract multiple properties
const
const powerDomains: (string | number)[]
powerDomains
=
import _
_
.
function pluck<{
name: string;
power: number;
domain: string;
}, "power" | "domain">(array: readonly {
name: string;
power: number;
domain: string;
}[], mappings: readonly ("power" | "domain")[]): (string | number)[] (+1 overload)

Extracts values from an array of objects based on specified mappings. Useful for extracting multiple properties from an array of objects (e.g. for tabular data). Also supports “computed properties” via mapping functions, which can combine and transform values on-the-fly.

  • If mappings are provided, returns an array of arrays where each inner array contains the values extracted by applying each mapping to the corresponding object.
  • If no mappings are provided, returns an array of arrays containing all values of each object.

@seehttps://radashi.js.org/reference/array/pluck

@example

interface God {
name: string;
power: number;
domain: string;
}
const gods: God[] = [
{ name: 'Ra', power: 100, domain: 'Sun' },
{ name: 'Zeus', power: 98, domain: 'Lightning' },
{ name: 'Loki', power: 72, domain: 'Tricks' }
];
// Extract a set of properties
pluck(gods, ['power', 'domain']);
// [[100, 'Sun'], [98, 'Lightning'], [72, 'Tricks']]
// Extract all properties
pluck(gods);
// [['Ra', 100, 'Sun'], ['Zeus', 98, 'Lightning'], ['Loki', 72, 'Tricks']]

@version12.5.0

pluck
(
const gods: {
name: string;
power: number;
domain: string;
}[]
gods
, ['power', 'domain'])
// => [[100, 'Sun'], [98, 'Lightning'], [72, 'Tricks']]
// Extract all properties
const
const allProps: unknown[]
allProps
=
import _
_
.
function pluck<{
name: string;
power: number;
domain: string;
}>(array: readonly {
name: string;
power: number;
domain: string;
}[], mappings?: readonly _.Mapping<{
name: string;
power: number;
domain: string;
}>[] | undefined): unknown[] (+1 overload)

Extracts values from an array of objects based on specified mappings. Useful for extracting multiple properties from an array of objects (e.g. for tabular data). Also supports “computed properties” via mapping functions, which can combine and transform values on-the-fly.

  • If mappings are provided, returns an array of arrays where each inner array contains the values extracted by applying each mapping to the corresponding object.
  • If no mappings are provided, returns an array of arrays containing all values of each object.

@seehttps://radashi.js.org/reference/array/pluck

@example

interface God {
name: string;
power: number;
domain: string;
}
const gods: God[] = [
{ name: 'Ra', power: 100, domain: 'Sun' },
{ name: 'Zeus', power: 98, domain: 'Lightning' },
{ name: 'Loki', power: 72, domain: 'Tricks' }
];
// Extract a set of properties
pluck(gods, ['power', 'domain']);
// [[100, 'Sun'], [98, 'Lightning'], [72, 'Tricks']]
// Extract all properties
pluck(gods);
// [['Ra', 100, 'Sun'], ['Zeus', 98, 'Lightning'], ['Loki', 72, 'Tricks']]

@version12.5.0

pluck
(
const gods: {
name: string;
power: number;
domain: string;
}[]
gods
)
// => [['Ra', 100, 'Sun'], ['Zeus', 98, 'Lightning'], ['Loki', 72, 'Tricks']]

Mapping Function

The pluck function can also accept mapping functions in addition to property names.

import * as
import _
_
from 'radashi'
const
const gods: {
name: string;
power: number;
domain: string;
}[]
gods
= [
{
name: string
name
: 'Ra',
power: number
power
: 100,
domain: string
domain
: 'Sun' },
{
name: string
name
: 'Zeus',
power: number
power
: 98,
domain: string
domain
: 'Lightning' },
{
name: string
name
: 'Loki',
power: number
power
: 72,
domain: string
domain
: 'Tricks' },
]
const
const mapped: (string | number)[]
mapped
=
import _
_
.
function pluck<{
name: string;
power: number;
domain: string;
}, ((god: {
name: string;
power: number;
domain: string;
}) => string) | ((god: {
name: string;
power: number;
domain: string;
}) => number)>(array: readonly {
name: string;
power: number;
domain: string;
}[], mappings: readonly (((god: {
name: string;
power: number;
domain: string;
}) => string) | ((god: {
name: string;
power: number;
domain: string;
}) => number))[]): (string | number)[] (+1 overload)

Extracts values from an array of objects based on specified mappings. Useful for extracting multiple properties from an array of objects (e.g. for tabular data). Also supports “computed properties” via mapping functions, which can combine and transform values on-the-fly.

  • If mappings are provided, returns an array of arrays where each inner array contains the values extracted by applying each mapping to the corresponding object.
  • If no mappings are provided, returns an array of arrays containing all values of each object.

@seehttps://radashi.js.org/reference/array/pluck

@example

interface God {
name: string;
power: number;
domain: string;
}
const gods: God[] = [
{ name: 'Ra', power: 100, domain: 'Sun' },
{ name: 'Zeus', power: 98, domain: 'Lightning' },
{ name: 'Loki', power: 72, domain: 'Tricks' }
];
// Extract a set of properties
pluck(gods, ['power', 'domain']);
// [[100, 'Sun'], [98, 'Lightning'], [72, 'Tricks']]
// Extract all properties
pluck(gods);
// [['Ra', 100, 'Sun'], ['Zeus', 98, 'Lightning'], ['Loki', 72, 'Tricks']]

@version12.5.0

pluck
(
const gods: {
name: string;
power: number;
domain: string;
}[]
gods
, [
god: {
name: string;
power: number;
domain: string;
}
god
=> `${
god: {
name: string;
power: number;
domain: string;
}
god
.
name: string
name
} is a god of ${
god: {
name: string;
power: number;
domain: string;
}
god
.
domain: string
domain
}`,
god: {
name: string;
power: number;
domain: string;
}
god
=>
god: {
name: string;
power: number;
domain: string;
}
god
.
power: number
power
,
])
// => [
// ['Ra is a god of Sun', 100],
// ['Zeus is a god of Lightning', 98],
// ['Loki is a god of Tricks', 72]
// ]