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 undefined
and 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