By way of context, some similar ideas have been previously discussed: - https://esdiscuss.org/topic/picking-deconstructing-properties-into-object-literals - https://esdiscuss.org/topic/destructuring-an-object-into-a-new-object-like-underscore-pick-but-esier - https://esdiscuss.org/topic/extended-dot-notation-pick-notation-proposal
FWIW, I actually do like the idea of being able to syntactically "reshape" one object or array directly into another, and there's probably even a cowpath argument to be made on the basis of so many `pick()`, `omit()`, etc. implementations out there. On the other hand, per Isiah's comments, we're at least 90% there already with Object.assign(), so it seems like the value proposition could/should be developed a bit more on this. On Wed, Apr 25, 2018 at 12:29 PM, Arutyunyan Artyom <arta...@ya.ru> wrote: > > I think it can be looks like: https://gist.github.com/artalar/ > ea8512546a3675648615a25e846096a6 > > 25.04.2018, 18:58, "Isiah Meadows" <isiahmead...@gmail.com>: > > It doesn't. But with objects, it's not a cheap operation to simply > duplicate, and they aren't normally immutable like primitives. Furthermore, > why is it for objects, not arrays? > > (I'm pushing that second question as a point of potential confusion - > remember the user.) > > On Wed, Apr 25, 2018, 11:45 Arutyunyan Artyom <arta...@ya.ru> wrote: > > spread assignment not mutate, it reassign, like "+=" and other. > > if ( > ('a = {...a,...b}'.length > 'a ...= b'.length) === ('n = n+1'.length > 'n > += 1'.length) > ) { console.log('why "addition assignment" is necessary, but "spread > assignment" is not?'); } > > > > > 25.04.2018, 18:21, "Isiah Meadows" <isiahmead...@gmail.com>: > > Note: `Object.assign` mutates its first argument and (with only obscure > caveats) does exactly this. Not sure syntax is necessary here. > > Oh, and arrays also have the common idiom `array.push(...values)` (but > they could use an `Array.prototype.pushAll` to avoid polluting arguments > lists). > > On Wed, Apr 25, 2018, 09:24 Артём Арутюнян <arta...@ya.ru> wrote: > > I propose *spread assignment operator*: > > *var obj = { test1: 1 };* > *var anotherObj = { test2: 2 };* > *obj ...= { test2: 2 }; // == (obj = { ...obj, ...anotherObj })* > *// { test1: 1, test2: 2 }* > > I'm surprised it wasn't in the original implementation > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss > > > _______________________________________________ > es-discuss mailing list > es-discuss@mozilla.org > https://mail.mozilla.org/listinfo/es-discuss > > -- Jeremy Martin 661.312.3853 @jmar777 <https://twitter.com/jmar777> / @j <https://stream.live/j>
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss