2626. 数组归约运算

50 阅读1分钟

给定一个整数数组 nums、一个 reducer 函数 fn 和一个初始值 init,返回通过依次对数组的每个元素执行 fn 函数得到的最终结果。

通过以下操作实现这个结果:val = fn(init, nums[0]),val = fn(val, nums[1]),val = fn(val, nums[2]),... 直到处理数组中的每个元素。然后返回 val 的最终值。

如果数组的长度为 0,则函数应返回 init

请你在不使用内置数组方法的 Array.reduce 前提下解决这个问题。

/**
 * @param {number[]} nums
 * @param {Function} fn
 * @param {number} init
 * @return {number}
 */
var reduce = function(nums, fn, init) {
    let result=init;
    for(let i=0;i<nums.length;i++){
        result=fn(result,nums[i]);
    }
    return result;
};


 let arr = [1, 2, 3, 4]
 funSum = function sum(accum, curr) { return accum + curr }
 let start = 100
 console.log(reduce(arr, funSum, start))