# 2626. Array Reduce Transformation ###### tags: `leetcode 30 days js challenge` `Easy` [2626. Array Reduce Transformation](https://leetcode.com/problems/array-reduce-transformation/) ### 題目描述 Given an integer array `nums`, a reducer function `fn`, and an initial value `init`, return a **reduced** array. A **reduced** array is created by applying the following operation: `val = fn(init, nums[0])`, `val = fn(val, nums[1])`, `val = fn(val, nums[2])`, `...` until every element in the array has been processed. The final value of `val` is returned. If the length of the array is 0, it should return `init`. Please solve it without using the built-in `Array.reduce` method. ### 範例 **Example 1:** ``` Input: nums = [1,2,3,4] fn = function sum(accum, curr) { return accum + curr; } init = 0 Output: 10 Explanation: initially, the value is init=0. (0) + nums[0] = 1 (1) + nums[1] = 3 (3) + nums[2] = 6 (6) + nums[3] = 10 The final answer is 10. ``` **Example 2:** ``` Input: nums = [1,2,3,4] fn = function sum(accum, curr) { return accum + curr * curr; } init = 100 Output: 130 Explanation: initially, the value is init=100. (100) + nums[0]^2 = 101 (101) + nums[1]^2 = 105 (105) + nums[2]^2 = 114 (114) + nums[3]^2 = 130 The final answer is 130. ``` **Example 3:** ``` Input: nums = [] fn = function sum(accum, curr) { return 0; } init = 25 Output: 25 Explanation: For empty arrays, the answer is always init. ``` **Constraints**: - `0 <= nums.length <= 1000` - `0 <= nums[i] <= 1000` - `0 <= init <= 1000` ### 解答 #### TypeScript ```typescript= function reduce(nums: number[], fn: Fn, init: number): number { let result = init; if (nums.length === 0) return result; nums.forEach((item) => (result = fn(result, item))); return result; } ``` > [name=Sheep][time=Wed, May 10, 2023] ### Reference [回到題目列表](https://hackmd.io/@Marsgoat/leetcode_every_day)