24 lines
405 B
JavaScript
24 lines
405 B
JavaScript
|
|
/**
|
|
* Reduce `arr` with `fn`.
|
|
*
|
|
* @param {Array} arr
|
|
* @param {Function} fn
|
|
* @param {Mixed} initial
|
|
*
|
|
* TODO: combatible error handling?
|
|
*/
|
|
|
|
module.exports = function(arr, fn, initial){
|
|
var idx = 0;
|
|
var len = arr.length;
|
|
var curr = arguments.length == 3
|
|
? initial
|
|
: arr[idx++];
|
|
|
|
while (idx < len) {
|
|
curr = fn.call(null, curr, arr[idx], ++idx, arr);
|
|
}
|
|
|
|
return curr;
|
|
}; |