过滤数组中的元素
通过应用筛选条件,仅保留符合条件的元素,实现对数组中元素的过滤。
编写一个函数,接收以下三个参数:
nums
fn
,该函数接受两个整数参数并返回一个整数init
函数的目标是通过迭代地应用计算函数 fn
来对数组 nums
进行归约,并返回归约后的结果。若数组为空,则返回初始值 init
。
输入:
nums = [1,2,3,4]
fn = function sum(accum, curr) { return accum + curr; }
init = 0
输出:10
输入:
nums = [1,2,3,4]
fn = function sum(accum, curr) { return accum + curr * curr; }
init = 100
输出:130
输入:
nums = []
fn = function sum(accum, curr) { return 0; }
init = 25
输出:25
0 <= nums.length <= 1000
0 <= nums[i] <= 1000
0 <= init <= 1000
// 定义计算函数类型
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;
};