상세 컨텐츠

본문 제목

_.each and _.reduce - Lodash

Programming/Concept

by 쌩우 2019. 4. 22. 16:34

본문

codestates pre course 과제 중, lodash method를 하나씩 구현하는 과제가 있었다.

그 중에 IAT 문제로 나왔던 _.reduce 구현이 까다로웠던 것으로 기억해 정리해보았다.

each
each는 object 또는 array 전체를 순회하는 method이다. return 값은 따로 없다.

//Call iterator(value, key, collection) for each element of collection.  
//collection은 주어진 object, iterator는 collection 길이만큼 순회하는 함수.

_.each = function(collection, iterator) {
  if(Array.isArray(collection) {
    for(var i = 0; i < collection.length; i++) {
      iterator(collection[i], i, collection);
    }
  } else {
    for(var key in collection) {
      iterator(collection[key], key, collection);
    }
  }

reduce

_.reduce = function(collection, iterator, accumulator) {
       let result;
       let toArray = [];
       if(!Array.isArray(collection)){
         _.each(collection, function(element){
           toArray.push(element);
         });
         collection = toArray;
       }
       if(accumulator === undefined){
         result = collection[0]
         for(let i = 1; i < collection.length; i++){
           result = iterator(result, collection[i])
         }
       }else {
          result = accumulator
          for(let i = 0; i < collection.length; i++){
            result = iterator(result, collection[i])
          };
       };
       return result;
};

관련글 더보기

댓글 영역