5 ms·
> (Caveat: Iteration over collections is not yet specified) Is this a joke? Is not iterating over dictionaries and arrays javascript's most glaring weakness?
by herge 15y ago
> (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.
- stevejohnson 15y agoMy guess would be bikeshedding.
- JoshTriplett 15y agoRemember 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.
- tikhonj 15y agoThere 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().
- herge 15y agoIs 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.
- jashkenas 15y agoCoffeeScript'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.
- herge 15y agoExactly. The number one thing javascript should take from coffeescript is the iteration syntax.
- cmf028 15y agoecmascript 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
- samth 15y agoA 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?