본 시리즈는 인프런 강의 함수형 프로그래밍과 JavaScript ES6+ ( 지식 공유자 : 유인동 님 ) 의 강의를 수강하면서 내용을 제 방식대로 포스팅하는 글입니다.
이터러블 프로토콜을 따랐을때의 조합성에 대해서 한가지 사례를 더 살펴보자
let m = new Map();
m.set("a", 10);
m.set("b", 20);
const mit = m[Symbol.iterator]();
console.log(mit.next()); // {value: ['a', 10], done: false}
console.log(mit.next()); // {value: ['b', 20], done: false}
console.log(mit.next()); // {value: undefined, done: true}
// Map 객체도 이터러블 프로토콜을 따르기 때문에, 우리가 구현한 map 함수에서 보조함수를 통해 원하는 값을 수집할수 있다.
console.log(map(([k, v]) => [k, v * 2], m)); // [['a', 20], ['b', 40]]
// map 함수는 이런식의 조합도 가능하다.
// 다시 Map 객체를 생성할수도 있다.
console.log(new Map(map(([k, v]) => [k, v * 2], m))); // Map (2) {'a' => 20, 'b' => 40 }
이터러블 프로토콜을 따르는 함수와 이터러블 프로토콜을 따르는 값의 조합은 다양하게 사용할수가 있게 되는 것이다.
'Javascript' 카테고리의 다른 글
reduce 함수를 구현해보자 - JS ES6+ 함수형 프로그래밍 - 15 (2) | 2022.09.20 |
---|---|
filter 함수를 구현해보자 - JS ES6+ 함수형 프로그래밍 - 14 (1) | 2022.09.12 |
JS - 이터러블 프로토콜을 따른 map 의 다형성 (1) - JS ES6+ 함수형 프로그래밍 - 12 (0) | 2022.09.11 |
map 함수를 구현해보자 ( feat.이터러블 프로토콜 ) - JS ES6+ 함수형 프로그래밍 - 11 (0) | 2022.09.11 |
for...of, 전개 연산자, 구조 분해, 나머지 연산자 - JS ES6+ 함수형 프로그래밍 - 10 (0) | 2022.09.11 |