Pick properties from an object
Build a new object with only the requested own properties.
function pick({ value, keys }) { return Object.fromEntries(keys.filter(key => Object.hasOwn(value, key)).map(key => [key, value[key]])); }
Input & expected output
Input
{
"value": {
"from": "[email protected]",
"to": "[email protected]",
"subject": "Order 8812 confirmed",
"internalNote": "VIP customer"
},
"keys": [
"from",
"to",
"subject"
]
}Expected output
{
"from": "[email protected]",
"to": "[email protected]",
"subject": "Order 8812 confirmed"
}The edge case
Input
{
"value": {
"a": 1
},
"keys": [
"missing"
]
}Expected output
{}Know the limits
- Missing and inherited properties are skipped. Values are not deeply cloned.
- JSON input has string property keys only.
The function above is the implementation used by the lab. The lab validates JSON types and caps size before execution; include equivalent validation when accepting untrusted input in your application.
Source & maintenance
Based on Pick a subset of properties of an object from the original 1loc collection by Nguyen Huu Phuoc. Copyright (c) 2020 phuoc-ng. MIT licensed.
Curated implementation; explicit input bounds, edge cases, local fixtures and rebuilt presentation. Original MDX retained as inert source evidence.
Maintained by Oveyon. Source commit: 14b481cf60df. Read the license.
Keep exploring
- Omit properties from an object — Keep the own enumerable fields that are not in a supplied list.
- Create an object from pairs of key and value — Turn [key, value] pairs into a plain object with Object.fromEntries.
- Check if multiple objects are equal — Compare JSON serializations with the first object.