Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

    > (Caveat: Iteration over collections is not yet specified)
Is this a joke? Is not iterating over dictionaries and arrays javascript's most glaring weakness?

How hard would it be to agree on something like foreach, that, you know, actually works the way you think it should work.



There is a foreach that works: .forEach(). And when you're not just iterating over an array but transforming it, you have map(), reduce() and filter().


Is it really too much to ask to have some syntactic sugar. Is

    for i,v in blah
, where i is an index of an array, or a key (not a property!) of a dictionary really too much to ask in 2012?

No wonder people are using coffeescript.


CoffeeScript's got you covered. Here's forEach ...

    for item, index in list
... here's the same over an object ...

    for key, value of object
... here's the map() ...

    mapped = for item in list
... here's the filter() ...

    filtered = for item in list when item.isActive
... and so on.


Exactly. The number one thing javascript should take from coffeescript is the iteration syntax.


ecmascript 6 will also introduce for of loops which is said to fix for in. checkout wiki.ecmascript.org for all the ecmascript 6/harmony niceness


Remember that the spec won't come out for a while, after a pile of additional development. Also remember that we have to live with it for a long time, so taking the time to get it right seems preferable.


A different way to put it is: "the best way to iterate over collections is still being discussed, because we want to get it right".

Also, for `Map`, how do you think `foreach` should work? Should the function be called with (a) the key, (b) the value, (c) an array with both the key and the value, (d) the key and the value as separate arguments?

Similarly, in the statement:

    for(let x of some_map) { ... }
should `x` range over the keys, values, or key-value pairs of the map?


My guess would be bikeshedding.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: