---
name: pick-by
menu: Object
route: /pick-by
---

import { Link } from 'docz'
import Editor from '../../src/components/Editor'

# pick-by
[![npm](https://nodei.co/npm/@lavadrop/pick-by.svg?downloads=true)](https://nodei.co/npm/@lavadrop/pick-by/)

<svg width="151.3" height="20" viewBox="0 0 1513 200" xmlns="http://www.w3.org/2000/svg">
  <g>
    <rect fill="#555" width="864" height="200"/>
    <rect fill="#08C" x="864" width="649" height="200"/>
  </g>
  <g fill="#fff" textAnchor="start" fontFamily="Verdana,DejaVu Sans,sans-serif" fontSize="110">
    <text x="220" y="148" textLength="604" fill="#000" opacity="0.1">min + gzip</text>
    <text x="210" y="138" textLength="604">min + gzip</text>
    <text x="919" y="148" textLength="549" fill="#000" opacity="0.1">124 bytes</text>
    <text x="909" y="138" textLength="549">124 bytes</text>
  </g>
  <image x="40" y="35" width="130" height="132" href="https://lavadrop.com/public/favicon.png"/>
</svg>

[source](https://github.com/jedmao/lavadrop/blob/master/src/packages/pick-by/pickBy.ts)

Creates an object composed of the object properties for which predicate returns truthy.

## Playground


<Editor
	jsFunc="var%20pickBy%20%3D%20%28function%20%28%29%20%7B%0A%09%27use%20strict%27%3B%0A%0A%09/**%0A%09%20*%20Creates%20an%20object%20composed%20of%20the%20object%20properties%20for%20which%20predicate%20returns%20truthy.%0A%09%20*%20@category%20Object%0A%09%20*%20@param%20object%20The%20source%20object.%0A%09%20*%20@param%20predicate%20The%20function%20invoked%20per%20property.%0A%09%20*%20@returns%20The%20new%20object.%0A%09%20*%20@example%0A%09const%20obj%20%3D%20%7B%20a%3A%200%2C%20b%3A%20%27%27%2C%20c%3A%20true%2C%20d%3A%20%27hello%27%20%7D%0A%0A%09pickBy%28obj%29%0A%09//%20%3D%3E%20%7B%20c%3A%20true%2C%20d%3A%20%27hello%27%20%7D%0A%09%20*/%0A%09function%20pickBy%28object%2C%20predicate%20%3D%20v%20%3D%3E%20v%29%20%7B%0A%09%09return%20Object.keys%28object%29.reduce%28%28result%2C%20key%29%20%3D%3E%20%7B%0A%09%09%09const%20value%20%3D%20object%5Bkey%5D%3B%0A%09%09%09if%20%28predicate%28value%2C%20key%29%29%20%7B%0A%09%09%09%09result%5Bkey%5D%20%3D%20value%3B%0A%09%09%09%7D%0A%09%09%09return%20result%0A%09%09%7D%2C%20%7B%7D%29%0A%09%7D%0A%0A%09return%20pickBy%3B%0A%0A%7D%28%29%29%3B%0A"
	tsFunc="/**%0A%20*%20Creates%20an%20object%20composed%20of%20the%20object%20properties%20for%20which%20predicate%20returns%20truthy.%0A%20*%20@category%20Object%0A%20*%20@param%20object%20The%20source%20object.%0A%20*%20@param%20predicate%20The%20function%20invoked%20per%20property.%0A%20*%20@returns%20The%20new%20object.%0A%20*%20@example%0Aconst%20obj%20%3D%20%7B%20a%3A%200%2C%20b%3A%20%27%27%2C%20c%3A%20true%2C%20d%3A%20%27hello%27%20%7D%0A%0ApickBy%28obj%29%0A//%20%3D%3E%20%7B%20c%3A%20true%2C%20d%3A%20%27hello%27%20%7D%0A%20*/%0Afunction%20pickBy%3CT%20extends%20object%3E%28%0A%09object%3A%20T%2C%0A%09predicate%3A%20%3CK%20extends%20keyof%20T%3E%28value%3A%20T%5BK%5D%2C%20key%3A%20K%29%20%3D%3E%20any%20%3D%20v%20%3D%3E%20v%2C%0A%29%20%7B%0A%09return%20Object.keys%28object%29.reduce%3CPartial%3CT%3E%3E%28%28result%2C%20key%29%20%3D%3E%20%7B%0A%09%09const%20value%20%3D%20object%5Bkey%20as%20keyof%20T%5D%0A%09%09if%20%28predicate%28value%2C%20key%20as%20keyof%20T%29%29%20%7B%0A%09%09%09result%5Bkey%20as%20keyof%20T%5D%20%3D%20value%0A%09%09%7D%0A%09%09return%20result%0A%09%7D%2C%20%7B%7D%29%0A%7D%0A"
	value="const%20obj%20%3D%20%7B%20a%3A%200%2C%20b%3A%20%27%27%2C%20c%3A%20true%2C%20d%3A%20%27hello%27%20%7D%3B%0ApickBy%28obj%29%3B%0A"
/>

### Result

<div id="editor-result" />

## Parameters

| Name        | Type                                              | Description                        |
| :---------- | :------------------------------------------------ | :--------------------------------- |
| `object`    | `T`                                               | The source object.                 |
| `predicate` | `<K extends keyof T>(value: T[K], key: K) => any` | The function invoked per property. |

### Type parameters

| Name | Constraint |
| :--- | :--------- |
| `T`  | `object`   |
| `K`  | `keyof T`  |

## Returns

The new object.

### Return type

```ts
Partial<T>
```
