Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #39427
| Path | csiph.com!aioe.org!news.mb-net.net!open-news-network.org!.POSTED.50.236.197.178.dynamic.wless.lssmb00p-cgnat.res.cust.swisscom.ch!not-for-mail |
|---|---|
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
| Newsgroups | comp.lang.javascript |
| Subject | Re: Referencing an object prop with a string |
| Date | Wed, 03 Feb 2021 19:42:44 +0100 |
| Organization | PointedEars Software (PES) |
| Lines | 106 |
| Message-ID | <2637940.BEx9A2HvPv@PointedEars.de> (permalink) |
| References | <Vt-dnSg5Kd2Iuov9nZ2dnUU7-Q3NnZ2d@westnet.com.au> <5793bf43-6506-4351-bdca-3d59d740c5e5n@googlegroups.com> <806120824.0ifERbkFSE@PointedEars.de> <ddc05c02-03b1-4600-8236-5453b413a54an@googlegroups.com> <2081055.NgBsaNRSFp@PointedEars.de> <a6cd17cf-36d2-4724-9ca7-f512f7c4c03en@googlegroups.com> |
| Reply-To | Thomas 'PointedEars' Lahn <cljs@PointedEars.de> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset="UTF-8" |
| Content-Transfer-Encoding | 8Bit |
| Injection-Info | gwaiyur.mb-net.net; posting-host="50.236.197.178.dynamic.wless.lssmb00p-cgnat.res.cust.swisscom.ch:178.197.236.50"; logging-data="16943"; mail-complaints-to="abuse@open-news-network.org" |
| User-Agent | KNode/4.14.10 |
| Cancel-Lock | sha1:cJn7sfVMG1YBCdNaScoHzVsiXfo= |
| Face | iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAGFBMVEXTxa4RFk5dUWANED8PFEfy7+MGBiW+n3ZNF/QuAAACaElEQVQ4jVXUwVOcMBQG8Dc7Rc4PUntdWV2uxjDpGaGeozOp1woar4jd5t/v9wLstMwsA/ntlxdCAgUc1hjTc9/JCZfGoo3wG3HdmdAWrIJRHe7GM/TmpY5VFefuVcAkkPbLIaN8rmPmjloyZxgyR3GuJ4K0AGtJ2htz8o7yqikm759fldQXaMpbDzjKAG+8v+AugVTOPO5DOjLvGtUYQwh0CPjnVMyGd+8/GfUB5nLKJDD2aLDh5HYyMDJGDwQIo2ZmZcKbowNmAdB/AzyFhrmF2MHRb0QJJfaAnwGB6orZhoykLzJtGwF/xpYxI1dswomiUj3gTuAIqCn/4C7cULwGNBtwMTk3Y4LfKB5YUaOKBKYtpplm7u0vip8tU1NWWyI/7XdcSuIDoMt6rVHMWT0DbjHPGqDqZVSa6zleLcUTcIKLoMv3ueJluALtAo9B302zPPlrtiVScRdCjXvVh3e3JpYa/jjkuC9N+LrBMlz/eAN4eQijX2EdLo6c5tGGHwLyHFtXk89dDGHwCVhG9T0S/j55AhRZgkMCmUQXJ49TnS1wnQDvw0eAh9ICeMmEFbCnPMFzjAvsWoEWEFdYEx+S0MoUZ1gT1wId8+AF3Bl2OoEu906AUHx5VLw/gXYg/x84loOah/2UYNrgiwSwGO7RfUzVBbx/kgpckumGOi6QirtD6gkLTitbnxNol47S2jVc2vsN5kPqaAHT8uUdAJM4v/DanjYOwmUjWznGfwB7sGtAtor5BgofDuzaRj4kSQAqDakTsKORa3Q3xKi3gE1fhl71KRMqrdZ2AWNNg/YOhQyrVBnb+i+nEg4bsDA+egAAAABJRU5ErkJggg== |
| X-Face | %i>XG-yXR'\"2P/C_aO%~;2o~?g0pPKmbOw^=NT`tprDEf++D.m7"}HW6.#=U:?2GGctkL,f89@H46O$ASoW&?s}.k+&.<b';Md8`dH6iqhT)6C^.Px|[=M@7=Ik[_w<%n1Up"LPQNu2m8|L!/3iby{-]A+#YE}Kl{Cw$\U!kD%K}\2jz"QQP6Uqr],./"?;=4v |
| X-User-ID | U2FsdGVkX1+jrS8D+wOGhla4FEPYxmdK/drIkpvABjNzYPknVswENg== |
| Xref | csiph.com comp.lang.javascript:39427 |
Show key headers only | View raw
Michael Haufe (TNO) wrote:
> […] Thomas 'PointedEars' Lahn wrote:
>> Michael Haufe (TNO) wrote:
>> > I wonder if a variant of JSONPath could be promoted into the language
>> > proper.
>> Yes, I am not particularly fond of Stefan Goessners syntax choices
>> either. While I could perhaps live with “@” instead of “.”, coming from
>> the command shell I find “..” to access *subordered* items very
>> counter-intuitive (I also did with E4X). Why did he not propose and
>> implement the familiar XPath syntax? For example, I see no good reason to
>> propose ”$” instead of “/”.
>
> I don't think either could be used:
>
> '$' is a variable name already so that could not become a reserved work
ISTM that he defined “$” to only signify the root element if it occurred as
first character in the path.
> '/' could be used as a prefix operator but with the existence of
> multi-line comments: '/* ... */'
> single line comments: '// ...'
> and '/' as an infix division I think that would be hard to sell.
We are talking about literals here.
> Additionally, if '/' is used as the root, it seems to want '//' as the
> descendant selector like xpath. This would conflict with single line
> comments.
See above.
> Maybe '#' as root?
That’s even worse than “@” :-D “@” I can at least associate with “here”.
>> One problem I see is that there is not really a need for it anymore (or
>> is there?): You can write now (and at least *execute* much more
>> efficiently)
>>
>> obj?.store?.book?.filter((book) => book.price < 10)
>> .map((book) => book.title) || []
>>
>> instead of
>>
>> jsonPath(obj, '$.store.book[?(@.price < 10)].title')
>>
>> Which reminds me of LINQ which solves similar problems.
>
> I think a descendent operator/method is the primary missing feature.
>
> obj.descendants('book')
> obj..book
AISB, I find “..” counter-intuitive.
>> > At least Slice Notation has a change of succeeding:
>> >
>> > <https://github.com/tc39/proposal-slice-notation>
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>> Yes, I think that would be a useful and unproblematic addition.
>>
>> I would even like a[-1] as in Python
^^^^^^^^^^^^^^^^^
> Doesn't work in bracket notation but at least it works with slice:
*facepalm*
> ```
> let xs = ['a', 'b', 'c']
> xs.slice(-1) // 'c'
> ```
>
> I guess you could use proxy to support the bracket form. […]
That is what I did and said. Just not with classes. See below :-D
>> (seriously, is there a use-case for
>> properties named named “-1” in an *array*?).
>
> I'm too lazy to check but this reminded me that there was a bug/feature
> in an earlier version of Firefox that had '-1' and '-2' defined on the
> arguments object. The values of those positions were information like
> argument length and something else I forget.
OK, but that is not an *array*. And a broken implementation (now likely
fixed) is not a good argument against the syntax.
>> I added support for using
>> negative indexes to access elements from the end of an array in
>> JSX:array.js:BigArray with Proxy, and BigArray.prototype.get() to do it
^^^^^^^^^^
>> in a backwards-compatible way, about 5 years ago:
>>
>>
<https://github.com/PointedEars/JSX/blob/e6eb05cb945df7b7304d572ccbac90ae9a632286/array.js#L491-L1158>
>
> Any interest in modernizing to post ES6+?
Yes.
--
PointedEars
FAQ: <http://PointedEars.de/faq> | <http://PointedEars.de/es-matrix>
<https://github.com/PointedEars> | <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | Please do not cc me./Bitte keine Kopien per E-Mail.
Back to comp.lang.javascript | Previous | Next — Previous in thread | Find similar | Unroll thread
Referencing an object prop with a string Andrew Poulos <ap_prog@hotmail.com> - 2021-01-31 14:42 +1100
Re: Referencing an object prop with a string "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2021-01-30 19:52 -0800
Re: Referencing an object prop with a string "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2021-01-30 19:54 -0800
Re: Referencing an object prop with a string Andrew Poulos <ap_prog@hotmail.com> - 2021-01-31 20:29 +1100
Re: Referencing an object prop with a string H e <he12457@hotmail.com> - 2021-01-31 02:17 -0800
Re: Referencing an object prop with a string Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2021-02-02 04:06 +0100
Re: Referencing an object prop with a string "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2021-02-02 13:01 -0800
Re: Referencing an object prop with a string Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2021-02-02 23:50 +0100
Re: Referencing an object prop with a string "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2021-02-02 19:19 -0800
Re: Referencing an object prop with a string "Michael Haufe (TNO)" <tno@thenewobjective.com> - 2021-02-02 19:26 -0800
Re: Referencing an object prop with a string Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2021-02-03 19:42 +0100
csiph-web