函数实现:数组归约

问题描述

编写一个函数,接收以下三个参数:

  • 整数数组 nums
  • 计算函数 fn,该函数接受两个整数参数并返回一个整数
  • 初始值 init

函数的目标是通过迭代地应用计算函数 fn 来对数组 nums 进行归约,并返回归约后的结果。若数组为空,则返回初始值 init

示例

示例 1

        
markdown
12345
输入: nums = [1,2,3,4] fn = function sum(accum, curr) { return accum + curr; } init = 0 输出:10

示例 2

        
markdown
12345
输入: nums = [1,2,3,4] fn = function sum(accum, curr) { return accum + curr * curr; } init = 100 输出:130

示例3

        
markdown
12345
输入: nums = [] fn = function sum(accum, curr) { return 0; } init = 25 输出:25

约束条件

  • 0 <= nums.length <= 1000
  • 0 <= nums[i] <= 1000
  • 0 <= init <= 1000

TypeScript 实现代码

        
TypeScript
1234567891011121314151617
// 定义计算函数类型 type Fn = (accum: number, curr: number) => number // 数组归约函数实现 function reduce(nums: number[], fn: Fn, init: number): number { let num = init; if (!nums.length) return init; // 遍历数组并应用计算函数 nums.forEach((item, i) => { const listItem = fn(num, item); num = listItem; }); // 返回归约后的结果 return num; };