On Jun 8, 2013, at 9:31 PM, Yehuda Katz wrote:

> 
> 
> Yehuda Katz
> (ph) 718.877.1325
> 
> 
> On Sat, Jun 8, 2013 at 9:23 PM, Dmitry Soshnikov <dmitry.soshni...@gmail.com> 
> wrote:
> I might be missing something, but how for-of help solving parametrized 
> enumeration (that is, specifying an action applied on a value/key in a 
> functional style)?
> 
> I see clear use-case of Object.values(...) in addition to Object.keys(...), 
> and it has nothing to do with for/of enumeration.
> 
> Why refuse a convenient library method and force users to 1) let values = []; 
> 2) for (v of values(o)) { values.push(v); }, if it can be just let values = 
> Object.values(o);?
> 
> I'm confused. Your example shows (correctly) that a `values` method exists 
> that does what you want. What more are you asking for?
>  

I'm confused either (please correct me if I'm mistaken), since values(...) 
generator method doesn't do what I want, it returns a _gen_, but not an array 
of values corresponding to own enumerable properties (returned by 
Object.keys(...) with the same enumeration order).

> Why refuse a _parametrized_ functional iteration such as Object.forEach(o, 
> parametrizedAction) and force users to write different static for-of loops 
> with own loop body per each condition, if this condition can be passed as a 
> function?
> 
> I am personally in favor of a collections module that works across any 
> iterable. I don't think we have anything on tap for ES6, but it would be 
> trivial to write in pure JS in the ES6 timeframe and I don't see any reason 
> it couldn't be folded in to ES7 once it gets some real-world usage.
> 

Yeah, a generic parametrized enumeration in the function style would be nice to 
have. As for a clear practical use-case, I don't see the reason to wait until 
ES7 if this may happen now:

process(o, action) {
  if (action == 'init') {
    for (let v of values(o)) {
      this.initValue(v);
    }
  } else if (action == 'dump') {
    for (let v of values(o)) {
      this.dumpData(v);
    }
  } else if (/* whaever */) {
    // how many else parametrized actions
    // should I apply before we have a parametrized
    // enumerator?
  }
}

Which reduces basically to:

Object.forEach(o, this.init);
Object.forEach(o, this.dump);
// etc.

And of course everything can be implemented on a user-level, but why not to 
provide it out of the box?

Dmitry

> 
> P.S.: for consistency with [].forEach, it probably would make sense having 
> {}.forEach, but it's O.prototype pollution.
> 
> Dmitry
> 
> On Jun 7, 2013, at 10:18 AM, Dean Landolt wrote:
> 
>> The for/of iterators solve this nicely. This is definitely something that 
>> comes up a lot though, and this seems like a very handy cowpath to pave. If 
>> it were spec'd I'd suggest the naming and argument values should align with 
>> the for/of variants.
>> 
>> 
>> On Fri, Jun 7, 2013 at 12:57 PM, Andrea Giammarchi 
>> <andrea.giammar...@gmail.com> wrote:
>> it comes out from time to time devs would like to have `Object.values()` as 
>> equivalent of `Object.keys()` except the returned array would contain values.
>> 
>> Better than repeated
>> `Object.keys(obj).map(function(p){return this[k];}, obj);`
>> all over
>> 
>> but probably less useful than a more generic `Object.forEach(obj, callback, 
>> thisValue)` where `callback` would receive `(value, key, originalObject)` 
>> and `thisValue` as context.
>> 
>> This is consistent with `Array#forEach` and could simplify `for/in` loops 
>> passing over own enumerable properties only, as keys would do.
>> 
>> Thoughts ?
>> 
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss@mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>> 
>> 
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss@mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
> 
> 
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
> 
> 

_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to