Filtering collection properties the easy way
Paweł Kowalski
Posted on December 22, 2019
I have a collection from AWS S3 API that looks like this:
[
{
Key: 'instances/1/assets/12345.assets_deploy.zip',
LastModified: 2019-12-15T17:15:01.000Z,
ETag: '"e9907057481d6ce6fbd5e0d072353b96"',
Size: 169554,
StorageClass: 'STANDARD'
},
{
Key: 'instances/1/assets/12345.big.assets_deploy.zip',
LastModified: 2019-12-15T14:19:25.000Z,
ETag: '"02eb918489c37029e9aa218f5c1bae8e-10"',
Size: 171526382,
StorageClass: 'STANDARD'
}
]
And because I have it on the server-side, and client needs only Key
, LastModified
and Size
information, I need to filter it out before sending it back to the browser.
This is what I came up with:
const body = objects.map(({ Key, LastModified, Size }) => ({ Key, LastModified, Size }));
I found it pretty elegant, maybe because I like symmetry :)
Couple words of explanation:
1) .map
- Mapping over each element of an array - in this case objects
2) ({ Key, LastModified, Size })
- Using object destructuring to pull out only required key/value pairs form each object
3) =>
- Using arrow function to make it shorter
4) Using ()
around object literal {...}
to skip the return
keyword
Result is exactly what client expected:
[
{
Key: 'instances/1/assets/12345.assets_deploy.zip',
LastModified: 2019-12-15T17:15:01.000Z,
Size: 169554
},
{
Key: 'instances/1/assets/12345.big.assets_deploy.zip',
LastModified: 2019-12-15T14:19:25.000Z,
Size: 171526382
}
]
Can it be made better?
Posted on December 22, 2019
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 29, 2024