[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 함수를 이용해 오른쪽에 있던 함수부터 작업할 수 있도록 함
반응형
'개인활동 > 코테' 카테고리의 다른 글
[30 Days of JS] Memoize / Add two promises (1) | 2025.05.14 |
---|---|
[30 Days of JS] Return length of arguments passed / (0) | 2025.05.11 |
[30 Days of JS] Apply Transform Over Each Element in Array / Filter Elements from Array (0) | 2025.05.09 |
[30 Days of JS] To be or Not to be / Counter II (1) | 2025.05.08 |
[30 Days of JS] Create Hello World Function / Counter (0) | 2025.05.07 |