用文字记录生活,留下美好瞬间
原创

数组归约运算

共 1,049 字,需阅读 3 分钟
2018/10/12 上午
266 次阅读

#函数实现:数组归约

#问题描述

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

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

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

#示例

#示例 1

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

#示例 2

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

#示例3

          
  • 1
  • 2
  • 3
  • 4
  • 5
输入: nums = [] fn = function sum(accum, curr) { return 0; } init = 25 输出:25

#约束条件

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

#TypeScript 实现代码

          
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
// 定义计算函数类型 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; };
自由转载 - 署名 - 非商业性使用
https://zhangwurui.cn/article/28
0/0条看法
访客身份
在下有一拙见,不知...
期待你的捷足先登