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 <
[email protected]> 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 <[email protected]>
> 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 <
>> [email protected]> 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 <[email protected]>
>>> 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
>>>> [email protected]
>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>>
>>> --
>>>
>>> Henrique
>>> _______________________________________________
>>> es-discuss mailing list
>>> [email protected]
>>> https://mail.mozilla.org/listinfo/es-discuss
>>>
>> _______________________________________________
>> es-discuss mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/es-discuss
>>
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to