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);