Proposal: Object.path([ ... ], defaultValue)
An HTML attachment was scrubbed... URL: esdiscuss/attachments/20180215/302a6ad6/attachment-0001
An HTML attachment was scrubbed... URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20180215/302a6ad6/attachment-0001.html>
Sure Sebastian.
Sure Sebastian. On Fri, 16 Feb 2018 at 3:59 AM, Sebastian Malton <sebastian at malton.name> wrote: > This would be redundant because of the `?.` operator once it gets merged > > Sebastian Malton > *From:* vikashagrawal1990 at gmail.com > *Sent:* February 15, 2018 5:27 PM > *To:* es-discuss at mozilla.org > *Subject:* Proposal: Object.path([ ... ], defaultValue) > > Hello Everyone, > > It is a lot of times that we see `x is not a property of undefined` and to > solve this we have to resort to &&, something like -> data && > data.childData && data.childData.innerDataArray && > data.childData.innerDataArray.length > 0 whiich is quiet verbose. > > I suggest, we should add a utility method like Object.path, which takes > an array of strings and returns the value from a given nested object. Also, > this can take a second argument which will be a default value if not found. > > This is inspired by path and pathOr as implemented in > http://ramdajs.com/docs/#path > > Regards > ~Vikash > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20180215/e18214a6/attachment.html>
?. does not compose though, and a standard way to retrieve a path is needed in JSON Pointer too [1]
I've personally used similar approach in various cases, and old libraries
like Ext.JS used to
Function("this." + path.join('.')).call(target) to retrieve a path in a
speedy way.
Beside the "array of string" bit, which is limited if we think nested Arrays and/or Symbols as properties, I think a standard way to retrieve a path would be beneficial in various cases.
Just my 2 cents.
?. does not *compose* though, and a standard way to retrieve a path is
needed in JSON Pointer too [1]
I've personally used similar approach in various cases, and old libraries
like Ext.JS used to
`Function("this." + path.join('.')).call(target)` to retrieve a path in a
speedy way.
Beside the "array of string" bit, which is limited if we think nested
Arrays and/or Symbols as properties, I think a standard way to retrieve a
path would be beneficial in various cases.
Just my 2 cents.
[1] https://tools.ietf.org/html/rfc6901
On Thu, Feb 15, 2018 at 11:29 PM, Sebastian Malton <sebastian at malton.name>
wrote:
> This would be redundant because of the `?.` operator once it gets merged
>
> Sebastian Malton
> *From:* vikashagrawal1990 at gmail.com
> *Sent:* February 15, 2018 5:27 PM
> *To:* es-discuss at mozilla.org
> *Subject:* Proposal: Object.path([ ... ], defaultValue)
>
> Hello Everyone,
>
> It is a lot of times that we see `x is not a property of undefined` and to
> solve this we have to resort to &&, something like -> data &&
> data.childData && data.childData.innerDataArray && data.childData.
> innerDataArray.length > 0 whiich is quiet verbose.
>
> I suggest, we should add a utility method like Object.path, which takes
> an array of strings and returns the value from a given nested object. Also,
> this can take a second argument which will be a default value if not found.
>
> This is inspired by path and pathOr as implemented in
> http://ramdajs.com/docs/#path
>
> Regards
> ~Vikash
>
> _______________________________________________
> 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/20180215/ff313bfd/attachment.html>Seems like it composes fine (using ??./??[ syntax): `function
retrieve(obj, path) { return path.split('.').reduce((prev, key) =>
prev??[key], obj); } retrieve(someObject, 'a.b.c.d')`
Seems like it composes fine (using `??.`/`??[` syntax): `function
retrieve(obj, path) { return path.split('.').reduce((prev, key) =>
prev??[key], obj); } retrieve(someObject, 'a.b.c.d')`
On Thu, Feb 15, 2018 at 2:47 PM, Andrea Giammarchi <
andrea.giammarchi at gmail.com> wrote:
> ?. does not *compose* though, and a standard way to retrieve a path is
> needed in JSON Pointer too [1]
>
> I've personally used similar approach in various cases, and old libraries
> like Ext.JS used to
> `Function("this." + path.join('.')).call(target)` to retrieve a path in a
> speedy way.
>
> Beside the "array of string" bit, which is limited if we think nested
> Arrays and/or Symbols as properties, I think a standard way to retrieve a
> path would be beneficial in various cases.
>
> Just my 2 cents.
>
> [1] https://tools.ietf.org/html/rfc6901
>
> On Thu, Feb 15, 2018 at 11:29 PM, Sebastian Malton <sebastian at malton.name>
> wrote:
>
>> This would be redundant because of the `?.` operator once it gets merged
>>
>> Sebastian Malton
>> *From:* vikashagrawal1990 at gmail.com
>> *Sent:* February 15, 2018 5:27 PM
>> *To:* es-discuss at mozilla.org
>> *Subject:* Proposal: Object.path([ ... ], defaultValue)
>>
>> Hello Everyone,
>>
>> It is a lot of times that we see `x is not a property of undefined` and
>> to solve this we have to resort to &&, something like -> data &&
>> data.childData && data.childData.innerDataArray &&
>> data.childData.innerDataArray.length > 0 whiich is quiet verbose.
>>
>> I suggest, we should add a utility method like Object.path, which takes
>> an array of strings and returns the value from a given nested object. Also,
>> this can take a second argument which will be a default value if not found.
>>
>> This is inspired by path and pathOr as implemented in
>> http://ramdajs.com/docs/#path
>>
>> Regards
>> ~Vikash
>>
>> _______________________________________________
>> 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/20180217/adcb7830/attachment.html>Of course you can compose paths with it (and even without it), but it doesn't compose on it's own like a standard path syntax could.
Of course you can compose paths with it (and even without it), but it
doesn't compose on it's own like a standard path syntax could.
On Sun, 18 Feb 2018, 9:14 am Jordan Harband, <ljharb at gmail.com> wrote:
> Seems like it composes fine (using `??.`/`??[` syntax): `function
> retrieve(obj, path) { return path.split('.').reduce((prev, key) =>
> prev??[key], obj); } retrieve(someObject, 'a.b.c.d')`
>
> On Thu, Feb 15, 2018 at 2:47 PM, Andrea Giammarchi <
> andrea.giammarchi at gmail.com> wrote:
>
>> ?. does not *compose* though, and a standard way to retrieve a path is
>> needed in JSON Pointer too [1]
>>
>> I've personally used similar approach in various cases, and old libraries
>> like Ext.JS used to
>> `Function("this." + path.join('.')).call(target)` to retrieve a path in a
>> speedy way.
>>
>> Beside the "array of string" bit, which is limited if we think nested
>> Arrays and/or Symbols as properties, I think a standard way to retrieve a
>> path would be beneficial in various cases.
>>
>> Just my 2 cents.
>>
>> [1] https://tools.ietf.org/html/rfc6901
>>
>> On Thu, Feb 15, 2018 at 11:29 PM, Sebastian Malton <sebastian at malton.name
>> > wrote:
>>
>>> This would be redundant because of the `?.` operator once it gets merged
>>>
>>> Sebastian Malton
>>> *From:* vikashagrawal1990 at gmail.com
>>> *Sent:* February 15, 2018 5:27 PM
>>> *To:* es-discuss at mozilla.org
>>> *Subject:* Proposal: Object.path([ ... ], defaultValue)
>>>
>>> Hello Everyone,
>>>
>>> It is a lot of times that we see `x is not a property of undefined` and
>>> to solve this we have to resort to &&, something like -> data &&
>>> data.childData && data.childData.innerDataArray &&
>>> data.childData.innerDataArray.length > 0 whiich is quiet verbose.
>>>
>>> I suggest, we should add a utility method like Object.path, which takes
>>> an array of strings and returns the value from a given nested object. Also,
>>> this can take a second argument which will be a default value if not found.
>>>
>>> This is inspired by path and pathOr as implemented in
>>> http://ramdajs.com/docs/#path
>>>
>>> Regards
>>> ~Vikash
>>>
>>> _______________________________________________
>>> 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/20180218/a67c40a6/attachment.html>
Hello Everyone,
It is a lot of times that we see
x is not a property of undefinedand to solve this we have to resort to &&, something like -> data &&data.childData && data.childData.innerDataArray && data.childData.innerDataArray.length
I suggest, we should add a utility method like Object.path, which takes an array of strings and returns the value from a given nested object. Also, this can take a second argument which will be a default value if not found.
This is inspired by path and pathOr as implemented in ramdajs.com/docs/#path
~Vikash