collect

collect(iterator[, context]) -> Array

通过 iteratorEnumerable 中的元素进行变换,返回变换后的结果集。该方法有一个别名 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,因为它们避免了语法闭包的开销。