[Easy] LeetCode JS 30 - 2626. Array Reduce Transformation (手写原生阵列 reduce 方法)
2024年4月30日
💎 加入 E+ 成長計畫 如果你喜歡我們的內容,歡迎加入 E+,獲得更多深入的軟體前後端內容
LeetCode 30 Days of JavaScript
本题来自 LeetCode 的 30 天 JacaScript 挑战
2626. Array Reduce Transformation (手写原生阵列 reduce 方法)题目描述
给定一个整数阵列 nums
、一个缩减函式 fn
和一个初始值 init
,请实作 reduce
函式,该函式会依序对阵列中的每个元素执行 fn
函式,并将前一个执行的返回值,当作下一次执行的输入。
具体来说会这样:val = fn(init, nums[0]), val = fn(val, nums[1]), val = fn(val, nums[2]), ...
,直到阵列中的所有元素都被处理完毕,最后返回 val
的最终值。
如果阵列长度为 0,则函数应返回 init
。
请不要用 JavaScript 内建的 Array.reduce
方法解决此问题。
// 范例一
输入:
nums = [1,2,3,4]
fn = function sum(accum, curr) { return accum + curr; }
init = 0
输出: 10
解说:
最开始的值 init=0.
(0) + nums[0] = 1
(1) + nums[1] = 3
(3) + nums[2] = 6
(6) + nums[3] = 10
所以最后会是 10.
// 范例二
输入:
nums = [1,2,3,4]
fn = function sum(accum, curr) { return accum + curr * curr; }
init = 100
输出: 130
解说:
最开始的值 init=100.
(100) + nums[0] * nums[0] = 101
(101) + nums[1] * nums[1] = 105
(105) + nums[2] * nums[2] = 114
(114) + nums[3] * nums[3] = 130
所以最后会是 130.
本题解答
以下是本题的解答,详细解题思路可以在 E+ 成长计划看到。如果想练习更多题目,推荐可以到 GreatFrontEnd 上练习
解法
var reduce = function (nums, fn, init) {
let value = init;
for (const num of nums) {
value = fn(value, num);
}
return value;
};