collect(iterator[, context]) -> Array

Returns the results of applying the iterator to each element. Aliased as map.

This is a sort of Swiss-Army knife for sequences. You can turn the original values into virtually anything!

The optional context parameter is what the iterator function will be bound to. If used, the this keyword inside the iterator will point to the object given by the argument.


['Hitch', "Hiker's", 'Guide', 'To', 'The', 'Galaxy'].collect(function(s) {
  return s.charAt(0).toUpperCase();
// -> 'HHGTTG'

$R(1,5).collect(function(n) {
  return n * n;
// -> [1, 4, 9, 16, 25]

Optimized versions

There are two very common use-cases that will be much better taken care of by specialized variants.

First, the method-calling scenario: you want to invoke the same method on all elements, possibly with arguments, and use the result values. This can be achieved easily with invoke.

Second, the property-fetching scenario: you want to fetch the same property on all elements, and use those. This is a breeze with pluck.

Both variants perform much better than collect, since they avoid lexical closure costs.