UNPKG

foop

Version:

interfaces that describe their intentions.

28 lines (24 loc) 768 B
const size = require('../../util/size') /** * A specialized version of `reduce` for arrays. * @since 5.0.0-beta.6 * * @param {Array} [array] The array to iterate over. * @param {Function} iteratee The function invoked per iteration. * @param {*} [accumulator] The initial value. * @param {boolean} [initAccum] Specify using the first element of `array` as * the initial value. * @return {*} Returns the accumulated value. */ function arrayReduce(array, iteratee, accumulator, initAccum) { let index = -1 const length = size(array) if (initAccum && length) { accumulator = array[++index] } while (++index < length) { accumulator = iteratee(accumulator, array[index], index, array) } return accumulator } module.exports = arrayReduce