[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.
[FP&ES6+] 즉시 평가와 지연 평가의 비교
함수형 프로그래밍과 JavaScript ES6+ 강의를 듣고 정리한 내용입니다. ✅ 즉시 평가와 지연 평가의 중첩 사용 비교 즉시 평가를 사용하는 range, map, filter, take와 지연 평가를 사용하는 L.range, L.map, L.filter, take의 중첩 사용을 비교해 보고자 한다. range, map, filter, take의 중첩 사용 go( range(10), map(n => n + 10), filter(n => n % 2), take(2), console.log ); // output // [11, 13] go문 안에서의 실행 순서는 range, map, filter, take 순이다. 한 단계가 완료되면 다음 순서로 평가된 값을 넘기며 단계별로 실행된다. L.range, L..
2021. 12. 25.