TIL - 22

박지훈·2021년 2월 8일
0

TIL

목록 보기
19/46
post-thumbnail

✏️공부한것

reduce 함수 구현하기

_.reduce = function (arr, iteratee, initVal) {    //arr.reduce(iteratee,initVal)
  //초기값을 입력받은경우                               // iteratee() 함수만들어주기
  arr = _.slice(arr);  //입력받은 배열을 변경하면 안돼서 배열을 있는 그대로 복사 
  let acc = initVal;  //이 세 번째 인자로 초기 값이 전달되는 경우 그 값을 누적값의 기초(acc)로 하여 
  let index = 0;     //배열의 '첫 번째' 요소부터 반복 작업이 수행됩니다
  if( initVal === undefined){ //반면 초기 값이 전달되지 않은 경우 []
    acc = arr[0]   //첫번째요소를 출발로하여  [1] 
    index = 1      // 배열의 '두 번째' 요소부터 반복 작업이 수행됩니다.  index = 1
    arr.shift();   // arr[1]부터 반복작업이 수행됩니다 -> 첫번째요소를 지워줌  [3]
  }
  _.each(arr, function(ele){  //배열의 모든요소 가     [1,2,3,4,5]
    acc = iteratee(acc, ele, index, arr)  // 6 , 3 , 3 ,[] // iteratee 함수에 넣어서 적용 -> 그게 누적값
    index = index + 1   //반복할때마다 -> 인덱스가 늘어남  -> 다음인덱스 
  })
  return acc;
};

pluck 함수 구현하기

_.pluck = function (arr, keyOrIdx) {
  //[{a: 1}]   [ [a,1] ]  key 또는 index 
  //obj[a]  또는 a,1  을 새로운 배열에 저장하고 
  // return 새로운배열
  //map 을 사용 해야만함
  let result = [];    //빈배열에 
  _.map(arr, function(el){   //map을 이용해서 각 요소마다 함수를 적용해 
    result.push(el[keyOrIdx]); //함수결과값을 result에 푸쉬       el[keyOrIdx]    el[keyOrIdx]
  })
  //1.새로운 배열을 만들어서 
  //2.map을 이용해서 현재받아온 arr를 함수를 적용시켜서 
  //3.map의 결과값을 새로운 빈배열에 push
  //4.새로운 배열을 리턴 
  return result;
};

✏️ Today

내장 메소드를 구현해보는 과제였는데
처음에는 쉬웠는데
갈수록 내가 부족한 부분들은 여과없이 오랜시간동안 생각해야했는데
다행히 페어분이 해결책을 제시해 주셔서 무사히 끝냈다

0개의 댓글