/** @module array/pluck.ts */ import { untypedCurry } from '../function/untypedCurry' export function pluck( key: B, arr: A[][] ): Array export function pluck( key: B, arr: A[] ): Array export function pluck( key: number ): ( arr: A[][] ) => Array // export function pluck,E extends keyof C>(key: B) :(arr:C[]) => {[H in B ]?: C[E]}[B][] /** * Takes an key (or index) and an array of arrays or objects and returns * the selected key from each row * @example * pluck(1, [ [1,2,3], [4,5,6] ] ) * //=> [2,5] * pluck('a',[ {a:1,b:2}, {a:3,b:4}]) * // => [1,3] */ export function pluck( keys: A ): ( arr: B ) => B export function pluck( ...args ) { return untypedCurry( ( key, arr ) => arr.map( ( item ) => item[ key ] ) )( ...args ) } export default pluck