Underbar

김범주·2022년 3월 9일
0

Code Review

목록 보기
4/15
_.identity = function (val) {
  // TODO: 여기에 코드를 작성합니다.
  return val
};

_.take = function (arr, n) {
  // TODO: 여기에 코드를 작성합니다.
  if (n === undefined || n < 0) {
    return []
  }
  return _.slice(arr, 0, n)
};

_.drop = function (arr, n) {
  // TODO: 여기에 코드를 작성합니다.
  if (n === undefined || n < 0) {
    return [...arr]
  }
  return _.slice(arr, n, arr.length)
};

_.last = function (arr, n) {
  // TODO: 여기에 코드를 작성합니다.
  if (n === undefined || n < 0) {
    return _.drop(arr, arr.length-1)  
  }
  return _.drop(arr, arr.length-n)
};

_.each = function (collection, iteratee) {
  // TODO: 여기에 코드를 작성합니다.
  if (Array.isArray(collection)) {
    for (let i = 0; i<collection.length; i++) {
      iteratee(collection[i], i, collection)
    }
  }
  else if (typeof collection === 'object') {
    for (let key in collection) {
      iteratee(collection[key], key, collection)
    }
  }
};

_.filter = function (arr, test) {
  // TODO: 여기에 코드를 작성합니다.
  let result = []
  _.each(arr, function(el) {
    if (test(el)) {
      result.push(el)
    }
  })
  return result
};

_.reject = function (arr, test) {
  // TODO: 여기에 코드를 작성합니다.
  // TIP: 위에서 구현한 `filter` 함수를 사용해서 `reject` 함수를 구현해 보세요.
  let result = []
  _.filter (arr, function(el) {
    if (test(el) === false) {
      result.push(el)
    }
  })
  return result
};

_.uniq = function (arr) {
  // TODO: 여기에 코드를 작성합니다.
  let result = []
  _.each (arr, function(el) {
    if (_.indexOf(result, el) === -1) {
      result.push(el)
    }
  })
  return result
};

_.map = function (arr, iteratee) {
  // TODO: 여기에 코드를 작성합니다.
  // _.map 함수는 매우 자주 사용됩니다.
  // _.each 함수와 비슷하게 동작하지만, 각 요소에 iteratee를 적용한 결과를 리턴합니다.
  let result = []
  _.each (arr, function(el) {
    result.push(iteratee(el))
  })
  return result
};

_.pluck = function (arr, keyOrIdx) {
  return _.map (arr, function(el) {
    return el[keyOrIdx]
  })
};

_.reduce = function (arr, iteratee, initVal) {
  // TODO: 여기에 코드를 작성합니다.
  let start = initVal
  _.each(arr, function(el, idx) {
    if (start === undefined) {
      start = el
    }
    else {
      start = iteratee(start, el, idx, arr)
    }
  })
  return start
};
profile
개발꿈나무

0개의 댓글