<div dir="ltr"><br><div><br></div><div>To use destructuring assignment and not create additional variables you can assign the value of target to a previously defined object</div><div><br></div><div>```</div><div>let obj = {otherData: "other data"};<br>({firstName:obj.firstName, lastName:obj.lastName} = user.profile);<br></div><div>```</div><div><br></div><div>Alternatively there are various approaches which can be used to get only specific properties from an abject and set those properties and values at a new object without using destructing assignment.</div><div><br></div><div>Using object rest and ```reduce()```</div><div><br></div><div>```let obj = {otherData: "other data", ...["firstName", "lastName"].reduce((o, prop) => (o[prop] = user.profile[prop], o), {})};```</div><div><br></div><div>`Object.assign()`, spread syntax and `map()`</div><div><br></div><div>```let obj = Object.assign({otherData: "other data"}, ...["firstName", "lastName"].map(prop => ({[prop]:user.profile[prop]})));```<br></div><div><br></div><div>or the original approach at the OP.</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, May 27, 2019 at 1:44 PM Григорий Карелин <<a href="mailto:grundiss@gmail.com">grundiss@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">> Is the expected result for ```obj``` to be defined as a variable and ```firstName``` and ```lastName``` to not be defined as variables?<div>Exactly</div><div><br></div><div>As you mentioned above, we may use default value while destructuring to achieve the same result, but it looks quite unobvious and creates extra variables</div></div>
</blockquote></div>