[문제풀이] Underbar

play·2022년 5월 27일
0

문제풀이

목록 보기
5/7

언더바 새로운 배열 리턴


_.each

_.each  function (collection, iteratee) { // 반복문
  //intervieww(인터뷰당하는사람)->iterator(반복을하는것), iteratee(반복을당하는것)
  // TODO: 여기에 코드를 작성합니다.
  // collection: 배열, 객체
  if(Array.isArray(collection){ 
    for(let i = 0; i < collection.length; i++){
      iteratee(collection[i], i, collection); 
    }
  }else{
    for (let key in collection){
      iteratee(collection[key], key, collection);
    }
  }
};

_.indexOf

let result = -1;
_.each(arr, fuction(items, index) {
       if(item === target && result === -1)
		result = index
		}
});
return result;
});

_.filter

_.filter = function (arr, test) {
  const result = []; //세로운 배열 리턴
   _.each(arr,(ele, idx, arr) => {
     if(test(ele, idx, arr)){
       result.push(ele);
     }
   })
  return result;
};

element, index, array : 이 세개를 만들어주고 반복문을 돌려서 테스트 트부면 푸시해준다.


_.uniq

_.uniq = function (arr) {
  // [1,1,2,2,3,3,4,4,5,5,] -> [1,2,3,4,5]
  // todo
const result = [];
_.each(arr, ele => {if(_.indexOf(result, ele) === -1) result.push(ele)
  })
  return result;
}
};

_.map

  • 매우 자주 사용되는 함수
  • _.each함수와 비슷하게 동작하지만, 각 요소에 이터레이티를 적용한 결과를 리턴한다.
_.map = function (arr, iteratee) {
  const result = [];
  _.each(arr, (ele, idx, arr) => {
    result.push(iteratee(ele, idx, arr));
  })
  return result;
};

_.pluck

  • 배열을 배열로 가지는 배열 = 이중배열
    [[1,2,3], [1,2,3], [1,2,3]] -> 0번째 인덱스 추출 -> [1, 1, 1,]
_.pluck = function (arr, keyOfIdx) {
  return _.map(arr, arr => arr[keyOrIdx]);

_.reduce

_.reduce = function (arr, iteratee, initVal) { //undefined
  // 초기값이 있으면 -> acc -> 초기값
  // 초기값이 없으면 -> acc -> 0번째 인덱스
  let acc = initVal; // 없으면 undefined. 있을땐
  _.each(arr, (ele, idx, arr) => {
    if(acc === undefined) {
      acc = arr[0]; // acc 초기값 없을때
    }else{
      acc = iteratee(acc, ele, idx, arr) // 누적값이 계속 쌓이게 된다. -> acc
    }
  })
  return acc; 
};
profile
블로그 이사했습니다 🧳

0개의 댓글