[Easy] LeetCode JS 30 - 2626. Array Reduce Transformation (手写原生阵列 reduce 方法)

2024年4月30日

💎 加入 E+ 成長計畫 與超過 500+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

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;
};
🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們