[FP&ES6+] go, pipe, reduce에서 비동기 제어
함수형 프로그래밍과 JavaScript ES6+ 강의를 듣고 정리한 내용입니다. ✅ go, pipe, reduce에서 비동기 제어 const go = (...args) => reduce((a, f) => f(a), args); const pipe = (f, ...fs) => (...as) => go(f(...as), ...fs); const reduce = curry((f, acc, iter) => { if (!iter) { iter = acc[Symbol.iterator](); acc = iter.next().value; } else iter = iter[Symbol.iterator](); let cur; while(!(cur = iter.next()).done) { const a = cur.value..
2022. 1. 8.
[FP&ES6+] L.flatMap, flatMap
함수형 프로그래밍과 JavaScript ES6+ 강의를 듣고 정리한 내용입니다. ✅ Array.prototype.flatMap과 flatten + map의 비교 Array.flatMap() 먼저 Array.map()을 사용해 각 요소에 대해 map 연산을 수행한 후 얻은 결과를 값을 펼쳐 새로운 배열로 만든다. arr.flatMap(callback(currentValue[, index[, array]])[, thisArg]) currentValue : 배열에서 처리되는 현재 엘리먼트 console.log([[1, 2], [3, 4], [5, 6, 7], 8].flatMap(a => a)); console.log([[1, 2], [3, 4], [5, 6, 7]].flatMap(a => a.map(a => ..
2021. 12. 28.
[FP&ES6+] L.flatten, flatten
함수형 프로그래밍과 JavaScript ES6+ 강의를 듣고 정리한 내용입니다. ✅ L.flatten [[1, 2], 3, 4, [5, 6], [7, 8, 9]]와 같은 값이 들어왔을 때 결과값으로 [1, 2, 3, 4, 5, 6, 7, 8, 9] 와 같이 값을 펼친 결과를 리턴하는 함수이다. 다시 말해 위와 같은 값이 들어왔을 때 L.flatten을 사용하여 [...[1, 2], 3, 4, ...[5, 6], ...[7, 8, 9]] 처럼 동작하려 한다. 전개 연산자를 사용한 것과 같은 작업을 하기 위해서는 먼저 인자로 주어진 이터러블을 순회한다. 그러다 이터러블인 요소를 만나면 이들을 다 이터러블이 아닌 값이 될 때까지 값을 펼친다. const isIterable = (a) => a && a[Symb..
2021. 12. 27.