<div dir="ltr"><div class="gmail_quote"><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"><div>```<br></div></div><div dir="ltr"><div>let obj = {otherData: "other data"};<br>({firstName:obj.firstName, lastName:obj.lastName} = user.profile);<br></div><div>```</div></div></blockquote><div><br></div><div>I don't understand this.</div><div> </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"><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]})));```</div></div></blockquote><div><br></div><div>As the words "syntactic sugar" in the subject of the thread make clear, the OP is not merely looking for ways to assign one object's property into another--there are many ways to do that. He's looking for a terser, moire elegant way to do it, which hopefully would be moire semantic, less bug-prone, more type-checkable (for typed variants of the language), more reminiscent of existing syntax such as deconstruction, and potentially more optimizable by engines.</div><div><br></div><div>Bob</div></div></div>