collect
collect(iterator[, context]) -> Array
通过 iterator
对 Enumerable
中的元素进行变换,返回变换后的结果集。该方法有一个别名
map。参数 iterator
是一个函数对象。
对于序列而言,这个方法像瑞士军刀一样简单易用,并且功能强大。你可以根据你的需要对原始值作任意转换。
可选的 context
参数是 iterator
要绑定的对象,若设定该参数,iterator
中的 this
关键字将指向 context
对象。
样例
['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]
优化版本
对于下述两种常见的情形,请使用针对该方法进行优化后的版本:
第一,调用方法时:如果需要对所有的元素调用同一个方法(可具有参数),并获取结果集,请使用 invoke。
第二,获取属性时:如果需要获取所有元素的同一个属性的值,请使用 pluck。
上述两个方法的执行效率均优于 collect
,因为它们避免了语法闭包的开销。