123456789101112131415161718192021222324252627282930313233 |
- /**
- * Array reduce
- */
- function reduce(arr, fn, initVal) {
- // check for args.length since initVal might be "undefined" see #gh-57
- var hasInit = arguments.length > 2,
- result = initVal;
- if (arr == null || !arr.length) {
- if (!hasInit) {
- throw new Error('reduce of empty array with no initial value');
- } else {
- return initVal;
- }
- }
- var i = -1, len = arr.length;
- while (++i < len) {
- if (!hasInit) {
- result = arr[i];
- hasInit = true;
- } else {
- result = fn(result, arr[i], i, arr);
- }
- }
- return result;
- }
- module.exports = reduce;
|