for statement with index and value
Tingan Ho
tingan87 at gmail.com
Wed Jul 15 02:21:01 UTC 2015
Thanks for all the suggestion. I think since not many languages supports
this it would be very hard to convince you.
I think I can live with the `for (let [index, value] of arr.entries()) {}`
solution.
One
ons 15 juli 2015 kl 09:02 skrev Rick Waldron <waldron.rick at gmail.com>:
> If you need the _index of_ a value in an array, there is always...
> "indexOf" ;)
>
> for (let value of values) {
> let index = values.indexOf(value);
> }
>
> Rick
>
> On Tue, Jul 14, 2015 at 4:16 PM Tab Atkins Jr. <jackalmage at gmail.com>
> wrote:
>
>> On Mon, Jul 13, 2015 at 7:13 PM, Tingan Ho <tingan87 at gmail.com> wrote:
>> > Just following a discussion we had on TypeScript
>> > https://github.com/Microsoft/TypeScript/issues/3835
>> >
>> > In most times, I just need the value in an array, so I use a for..of
>> loop.
>> > But then, I find out that I need the index too, then I need to rewrite
>> my
>> > whole for loop expression. Happens all the time for me.
>> >
>> > I have to ask why there doesn't exist a `for statement` where I can get
>> the
>> > index and value of an array directly? Or for that matter property and
>> value
>> > of an object?
>> >
>> > `.forEach` is not ideal since you can't break, break to outer loop and
>> > continue cleanly. Even though you can achieve this with other array
>> methods,
>> > I don't think they are as productive as a for-statement.
>> >
>> > What I'm suggesting is augmenting the current syntax for `for..of`
>> loops.
>> > And support an overloading pattern so that we don't need to rewrite the
>> > whole for loop expression to just to get the index when we already
>> getting
>> > the value.
>> >
>> > ```
>> > // overloads
>> > for (let value, index of values) { ... }
>> > for (let value of values) { ... }
>> > ```
>> >
>> > PS. Sorry if this has already discussed. Couldn't find any on Google
>> and the
>> > esdiscuss.org page doesn't have any search capabilities.
>>
>> Kevin provided the built-in answer for arrays, but for arbitrary
>> iterables, the Python solution is trivial:
>>
>> function* enumerate(iter) {
>> let i = 0;
>> for(let value of iter) {
>> yield [i, value];
>> i++
>> }
>> }
>>
>> for(let [i, v] of enumerate(values)) {
>> ...
>> }
>>
>> I expect there's already libraries that duplicate all of Python's
>> itertools and more; the iterator algebra is really trivially hackable.
>>
>> ~TJ
>>
> _______________________________________________
>> 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/20150715/73559f1a/attachment-0001.html>
More information about the es-discuss
mailing list