collect
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.
Examples
['Hitch', "Hiker's", 'Guide', 'To', 'The', 'Galaxy'].collect(function(s) {
return s.charAt(0).toUpperCase();
}).join('')
// -> '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.