I have the following object.
let userInput = {
"id": "22a52279-cc48-430e-ada6-88a3f67cbb8b",
"first_name": "test",
"email": "test@hotmail.com",
"created_at": "2021-04-06T18:19:01.567Z",
"salary": null,
"department_name": null,
"department_id": null,
"last_name": null,
"gender": null,
"updated_at": "2021-04-06T18:19:01.567Z",
"address": "ad12",
"phone": null,
"city": null,
"university_name": null,
"university_city": null,
"about": null,
"is_admin": null
}
if i want to get some properties from this object and use them in another object i will do:
const {first_name, address, phone, city, university_name, university_city, about} = this.userInput;
this.user = {first_name, address, phone, city, university_name, university_city, about};
console.log(this.user);
then i get in the user variable this output
{
"first_name": "test",
"address": "ad12",
"phone": null,
"city": null,
"university_name": null,
"university_city": null,
"about": null
}
to prevent repeating my self – i wanted to store all this needed proeprty names in one array and reuse it so i tried
const getNeededProperties = ["first_name", " address", " phone", " city", " university_name", " university_city", " about"];
const {first_name, address, phone, city, university_name, university_city, about} = this.userInput;
this.user = {...getNeededProperties};
i will get the same output – so basically i store first_name then address etc… as local variables
and then i am assaigning them to the user object – i destructure the property names and it is working
but when i try to rest the property names from the array
const getNeededProperties = ["first_name", " address", " phone", " city", " university_name", " university_city", " about"];
const {...getNeededProperties} = this.userInput;
this.user = {...getNeededProperties};
i get error
Cannot redeclare block-scoped variable ‘getNeededProperties’.
Is there some way that i con all of this automatically ?
Advertisement
Answer
You can use reduce for this:
const userInput = {
"id": "22a52279-cc48-430e-ada6-88a3f67cbb8b",
"first_name": "test",
"email": "test@hotmail.com",
"created_at": "2021-04-06T18:19:01.567Z",
};
const neededProps = ["id", "first_name"];
const user = neededProps.reduce((res, prop) => ({
...res, [prop]: userInput[prop]
}), {});
console.log(user);