본문 바로가기

전체 글

(14)
함수형 프로그래밍 - (3) map, filter, reduce Array 객체가 이터러블/이터레이터 프로토콜을 따른다는 점을 이용하여, Array 내부의 함수들을 구현해보면서 이터러블 객체를 순회하는 방법들에 대해 알아보겠다. 1. map Array.map() 함수를 Array 객체가 이터러블/이터레이터 프로토콜을 따르고 있다는 점을 이용해서 다음과 같이 구현할 수 있다. Array.map()은 인자로 함수를 받으므로, 동일하게 인자로 함수를 받도록 하고 이터러블한 객체를 추가로 받으면서 새로운 배열은 기존 원소들을 함수에 넣은 결과를 담은 새로운 배열을 반환하면 된다. const map = (f, iter) => { const res = []; for (const p of iter) { res.push(f(p)); } return res; }; 2. filter ..
함수형 프로그래밍 - (2) 순회와 Iterable/Iterator 프로토콜 1. for ... of 기존 ES5에서와 달리, ES6에서는 for ... of로 배열, Map, Set 등 다양한 데이터 구조를 순회할 수 있다. (가능하다면) // Array const arr = [1, 2, 3]; for (const a of arr) console.log(a); // Set const aSet = new Set([1, 2, 3]); for (const a of aSet) console.log(a); // Map const map = new Map([ ["a", 1], ["b", 2], ["c", 3] ]); for (const a of map) console.log(a); 단순히 for ... of가 각 데이터를 인덱싱을 통해 순회하는 것 처럼 보일 수 있는데, 인덱싱으로 데이터..
함수형 프로그래밍 - (1) 평가, 일급, 일급 함수, 고차 함수 1. 평가 코드가 평가되어 값을 만드는 것 // true console.log([1, 1 + 2 + 3] === [1, 5]); 2. 일급 (1) 값으로 다룰 수 있다. (평가) (2) 변수에 담을 수 있다. const a = 10; // 10 console.log(a); (3) 함수의 인자로 사용될 수 있다. const a = 1; const b = 2; const add = (a, b) => a + b; // 3 console.log(add(a, b)); (4) 함수의 결과로 사용될 수 있다. const a = 1; const b = 2; const add = (a, b) => a + b; const c = add(2, 3); // 5 console.log(c); 3. 일급 함수 (1) 함수를 값으로..