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 _ from 'radashi'
const gods = [
{ name: 'Ra', power: 100, domain: 'Sun' },
{ name: 'Zeus', power: 98, domain: 'Lightning' },
{ name: 'Loki', power: 72, domain: 'Tricks' },
]
// Extract single property
const names = _.pluck(gods, ['name'])
// => [['Ra'], ['Zeus'], ['Loki']]
// Extract multiple properties
const powerDomains = _.pluck(gods, ['power', 'domain'])
// => [[100, 'Sun'], [98, 'Lightning'], [72, 'Tricks']]
// Extract all properties
const allProps = _.pluck(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 _ from 'radashi'
const gods = [
{ name: 'Ra', power: 100, domain: 'Sun' },
{ name: 'Zeus', power: 98, domain: 'Lightning' },
{ name: 'Loki', power: 72, domain: 'Tricks' },
]
const mapped = _.pluck(gods, [
god => `${god.name} is a god of ${god.domain}`,
god => god.power,
])
// => [
// ['Ra is a god of Sun', 100],
// ['Zeus is a god of Lightning', 98],
// ['Loki is a god of Tricks', 72]
// ]