Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
130 views
in Technique[技术] by (71.8m points)

javascript - Remove key from all objects in array

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...