ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 섹션 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)}); }


    댓글

Designed by Tistory.