-
섹션 3. 컬렉션 중심 프로그래밍 (수집하기 – map, values, pluck)javascript/인동님 인프런강의 정리 2018. 7. 21. 16:41반응형
섹션 3. 컬렉션 중심 프로그래밍 - 수집하기(map, values, pluck) 부분 내용 정리 (https://www.inflearn.com/course-status-2/ )
컬렉션 중심 프로그래밍은 컬렉션을 잘 다루는 함수 세트들을 구성하는 식으로 프로그래밍 해 나가는 것
컬렉션이란?
배열이나 돌림직한 데이터들을 다루는 것
컬렉션 중심 프로그래밍의 함수들은 4가지 유형으로 구분 할 수 있는데 다음과 같다.
1. 수집하기 - map, values, pluck 등
2. 거르기 - filter, reject, compact, without 등
3. 찾아내기 - find, some, every 등
4. 접기(축약) - reduce, min, max, group_by, count_by
map , filter , find , reduce 는 각 유형의 대표 함수 인데 대표 함수인 이유는 각 유형의 함수들 중 추상화 레벨이 높다. 그렇다는 이야기는 대표 함수들로 각 유형의 특화 함수를 만들수 있다.
이런 기준으로 문제를 바라보고 해결해 나가는 식으로 프로그래밍 하는것이 컬렉션 중심프로그래밍 이라고 할 수 있고, map, filter, find, reduce등의 고차 함수를 사용하는 프로그래밍이라고도 볼 수 있다.
map으로 values 함수, pluck 함수 만들기
var users = [ { id: 10, name: 'ID', age: 36 }, { id: 20, name: 'BJ', age: 32 }, { id: 30, name: 'JM', age: 32 }, { id: 40, name: 'PJ', age: 27 }, { id: 50, name: 'HA', age: 25 }, { id: 60, name: 'JE', age: 26 }, { id: 70, name: 'JI', age: 31 }, { id: 80, name: 'MP', age: 23 }, { id: 90, name: 'FP', age: 13 } ]; function _map(list, mapper){ var new_list = []; for(var i = 0; i < list.length; i++){ new_list.push(mapper(list[i])); } return new_list; } console.log( _map(users, function(user){ return user.name; }) ) // 결과 : (9) ["ID", "BJ", "JM", "PJ", "HA", "JE", "JI", "MP", "FP"]
values 함수
기능 : 들어있는 값과 동일한 값들을 꺼내는 함수 (key 가 object인 경우에 의미가 있다 )
function _values(data){
return _map(data, function(val){ return val; });
}
data 를 받고 _map 함수를 사용.
console.log(_values(users[0])); // 결과 : [10, "id", 36]
_values 함수는 _identity 함수를 사용하여 다음과 같이 바꿀 수 있다.
function _values(data) { return _map(data, _identity) } function _identity(val){ return val; }
부분의 함수가 _identity 로 바꿀 수 있는데 _values 함수를 더 줄일 수 있는데
var _values = _map(_identity)
pluck 함수
기능 : 원하는 주제별 정보를 얻을 수 있다.
function _pluck(data, key){ return _map(data, function(obj){ return obj[key]; }) }
부분은 get 함수로 대체 할 수 있다.
function _pluck(data, key){ return _map(data, _get(key)}); }
'javascript > 인동님 인프런강의 정리' 카테고리의 다른 글
섹션 4. 자바스크립트에서의 지연 평가 (0) 2018.08.01 섹션 3. 컬렉션 중심 프로그래밍 (거르기– reject, compact) (0) 2018.07.23 섹션 2. 함수형으로 전환하기 (_filter 함수, _map 함수) (0) 2018.07.18 섹션1. 함수형 프로그래밍 개요 정리 (0) 2018.07.07 댓글