blob: eb3d78f64ad2cae3947559e2dc618b8590942f01 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import reduce from './reduce';
var slice = Array.prototype.slice;
/**
* Same as `reduce`, only operates on `coll` in reverse order.
*
* @name reduceRight
* @static
* @memberOf async
* @see async.reduce
* @alias foldr
* @category Collection
* @param {Array|Object} coll - A collection to iterate over.
* @param {*} memo - The initial state of the reduction.
* @param {Function} iteratee - A function applied to each item in the
* array to produce the next step in the reduction. The `iteratee` is passed a
* `callback(err, reduction)` which accepts an optional error as its first
* argument, and the state of the reduction as the second. If an error is
* passed to the callback, the reduction is stopped and the main `callback` is
* immediately called with the error. Invoked with (memo, item, callback).
* @param {Function} [callback] - A callback which is called after all the
* `iteratee` functions have finished. Result is the reduced value. Invoked with
* (err, result).
*/
export default function reduceRight (arr, memo, iteratee, cb) {
var reversed = slice.call(arr).reverse();
reduce(reversed, memo, iteratee, cb);
}
|