Monday, May 13, 2024
 Popular · Latest · Hot · Upcoming
124
rated 0 times [  125] [ 1]  / answers: 1 / hits: 18412  / 7 Years ago, sat, june 3, 2017, 12:00:00

I have the following array of objects:



[{id:1, value:100, name:dog ...},
{id:2, value:200, name:cat ...},
{id:3, value:300, name:fish....},
{id:4, value:400, name:mouse ...},
{id:5, value:500, name:snake...}]


I want to filter the object array and keep only two keys, id and value to get something like this:



[{id:1, value:100},
{id:2, value:200},
{id:3, value:300},
{id:4, value:400},
{id:5, value:500}]


Currently, I'm traversing through the object array with a for loop and doing a push() to an empty array with the new variables. Is there an easier way to do this?



I wanted to use Lodash like _.pluck(PetList, 'id', 'value'); but lodash extracts the value only, not the key.


More From » arrays

 Answers
22

Array#filter filters individual items out of the array, not certain keys from an object in the array. You could use the method Array#map to transform the objects and only keeping the keys you want. map is designed to transform each element of an array to something new, mapping the old value to a new value:



let newPetList = PetList.map(pet => ({ 
id: pet.id,
value: pet.value
}));


The above traverses the array, and stores the current object in pet. It then returns a new object from an arrow function which will be the corresponding transformed object in newPetList with only keys id and value from pet. The result is that all objects in the old array are mapped to a new object with no name key.



You could also, with object destructuring, filter put unwanted properties like so:



let newPetList = petList.map(({ name, ...rest }) => rest);


This binds the name property to name and keeps the rest in rest, which you can return to remove the name key.


[#57569] Thursday, June 1, 2017, 7 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
lucianom

Total Points: 601
Total Questions: 98
Total Answers: 109

Location: Kenya
Member since Fri, Dec 23, 2022
1 Year ago
lucianom questions
Tue, Feb 22, 22, 00:00, 2 Years ago
Wed, May 5, 21, 00:00, 3 Years ago
Sun, Jan 24, 21, 00:00, 3 Years ago
Sat, Aug 15, 20, 00:00, 4 Years ago
Mon, Jun 22, 20, 00:00, 4 Years ago
;