Deep spread operator (Bilal Abdullah)

Cyril Auburtin cyril.auburtin at gmail.com
Wed Oct 24 11:13:02 UTC 2018


I think a combination of Object.entries, .flatMap and Object.fromEntries
could do the job

On Wed, Oct 24, 2018 at 1:12 PM Andrea Giammarchi <
andrea.giammarchi at gmail.com> wrote:

> both CircularJSON (deprecated) and flatted (the successor) easily deal
> with circular references while serializing / unserializing objects, yet you
> need to keep stored data simple.
>
> This is usually a common case for postMessage / workers though, so it
> shouldn't be a big deal.
>
> stringifiers and revivers can give you extra power to serialize /
> unserialize RegExps, Date, as well as BigInt too, storing values via
> `{new:'RegExp',args:['value', 'gi']}` simplifying the case for
> `{new:'Array', args:[...the-actual-array]}` and `{new: 'Object', args:
> [..the-actual-object...]}`
>
> Well, I'm sure you got there are many ways to deep copy and also with
> circular references.
>
> Regards
>
>
> On Tue, Oct 23, 2018 at 5:23 PM Naveen Chawla <naveen.chwl at gmail.com>
> wrote:
>
>> Is there any real problem with circular reference cloning? I don't see
>> any, Please let me know in the simplest case e.g. { a: a } (obviously
>> contrived syntax here)
>>
>> Otherwise, I agree completely about the 4 dots being the wrong syntax for
>> this, precisely for the reason you gave
>>
>> On Tue, 23 Oct 2018 at 18:18 Henrique Barcelos <
>> rick.hjpbarcelos at gmail.com> wrote:
>>
>>> IMO, this would be very problematic.
>>>
>>> 1. 4 dots are visually almost identical to 3 dots. This could introduce
>>> severe bugs because of a simple hard to spot typo.
>>>
>>> 2. Deep traversing will always have performance problems in some cases.
>>> Dealing with circular references can take this issue even further.
>>>
>>> I believe such functionality should be used in very specific situations,
>>> where object shape is well-known, not very deep and definitely not
>>> circular. So, supporting this at the core of the language will probably be
>>> frowned upon by the community.
>>>
>>> Em ter, 23 de out de 2018 08:57, Ahad Cove <ahadcove at gmail.com>
>>> escreveu:
>>>
>>>> Hello Scripters,
>>>>
>>>> I really appreciate everything you all have done for the language and
>>>> have no complaints over here.
>>>> I do have a suggestion though :)
>>>>
>>>> At work we’ve almost got rid of lodash, except we still need it for
>>>> DeepCopy vs rolling our own.
>>>> It’s the same with my side projects. I don’t use lodash because the
>>>> main times that I need deep copy is when I’m either digging into the Redux
>>>> store using React, or copying an observable in the Angular world.
>>>>
>>>> I believe ES Script users would appreciate having a deep copy spread
>>>> operator tremendously.
>>>>
>>>> My proposal is to go off of the current spread operator we currently
>>>> have in ES and make it 4 dots for a deep spread. This can be used on
>>>> Objects or Arrays.
>>>>
>>>> ‘’’js
>>>> const oldDeepObj = {
>>>>   InnerObj: {
>>>>        func: () => return ‘wow’
>>>>    }
>>>> }
>>>>
>>>> const obj = {....oldDeepObj}
>>>> obj.innerObj.func = () => return ‘nice’
>>>>
>>>> oldDeepObj.innerObj.func()
>>>> > wow
>>>> ‘’’
>>>>
>>>> Thank you!
>>>> Looking forward to hearing back from you all.
>>>> If there’s any other questions let me know
>>>>
>>>> - Bilal Abdullah
>>>> _______________________________________________
>>>> es-discuss mailing list
>>>> es-discuss at mozilla.org
>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>>
>>> --
>>>
>>> Henrique
>>> _______________________________________________
>>> es-discuss mailing list
>>> es-discuss at mozilla.org
>>> https://mail.mozilla.org/listinfo/es-discuss
>>>
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20181024/3c2e7425/attachment.html>


More information about the es-discuss mailing list