[30 Days of JS] Array reduce transformation / Function composition

2025. 5. 10. 06:07개인활동/코테

반응형

/**
 * @param {number[]} nums
 * @param {Function} fn
 * @param {number} init
 * @return {number}
 */
var reduce = function(nums, fn, init) {
    let value = init;

    if (!nums.length) {
        return init;
    } else {
        for (let i = 0; i < nums.length; i++) {
            value = fn(value, nums[i]);
        }
    } 
    return value;
};
  • nums array가 비어있는 경우 따로 처리해주기 -> 코드를 넣지 않아도 알아서 처리가 되지만, 혹시 몰라서 추가

/**
 * @param {Function[]} functions
 * @return {Function}
 */
var compose = function(functions) {
    let reverse_funcs = functions.reverse(); 
    
    return function(x) {
        if (!functions.length) {
            return x;
        } else {
            
            for (let i = 0; i < reverse_funcs.length; i++) {
                x = reverse_funcs[i](x);
            }
            return x;
        }
        
    }
};
  • reverse 함수를 이용해 오른쪽에 있던 함수부터 작업할 수 있도록 함
반응형