Jinho

[Vanilla Coding Prep W03] 6, 7주차 회고

2021. 9. 3. 20:49

전반적으로 멘붕과 자괴감과 고됨이 함께했던 시간. 그런데 아직까지 재미있는거 보면 좀 신기 ㅎ

후기

1.

_.contains(collection, target) 을 수정하면 안된다고해서
_.reduce(collection, iterator, accumulator) 를 수정했다. object도 가능하도록. 원래는 아래 코드였음.

if (accumulator === undefined) {
    for (let i = 2; i < collection.length; i++) {
      accumulator = iterator(collection[0], collection[1]);
      accumulator = iterator(accumulator, collection[i]);
    };
  } else {
    for (let i = 0; i < collection.length; i++) {
      accumulator = iterator(accumulator, collection[i]);
    };
  };

2.
_.contains(collection, target) 에서 쓰인 _.reduce(collection, iterator, accumulator)를 제대로 파악하기 위해서 아래와 같이 메모해가며 작업을 해보았다. 예시를 넣어 좀 더 직관적으로 파악하기 위한 작업이었는데 나름 괜춘한듯 하다. wasFound 파악이 제일 모호했는데 다음 작업들에 도움이 될 것 같은 느낌이다.

_.contains = function ({ a: 1, b: 2, c: 3 }, 3) {
  return _.reduce(
    { a: 1, b: 2, c: 3 },
    function (wasFound, item) {if (wasFound) {return true;} return item === target;},
    false
  );
}

1턴 기준 a: 1 / wasFound(accumulator): false / item: 1 / target: 3 / item === target: false
2턴 기준 b: 2 / wasFound(accumulator): false / item: 2 / target: 3 / item === target: false
3턴 기준 c: 3 / wasFound(accumulator): false / item: 3 / target: 3 / item === target: true
최종 반환값 : true (=== wasFound(accumulator))

// 첫번째 wasFound 는 초기값인 false 를 받아서 오는거임.
// _.every(collection, iterator) 에서도 써먹음.
// _.some([true, false, 1], _.identity) 에서도 써먹음.

3.
초기 코드이다. 원본은 수정. 다만 이 뒤에 _.default 에서 벨붕 ㅠ 이 두가지의 완전한 리팩토링이 필요하다.

_.extend = function (obj) {
  const objSource = Object.entries(obj)

  for (let i = 0; i < arguments.length; i++) {
    let argSource = Object.entries(arguments[i]);
    for (let j = 0; j < argSource.length; j++) {
      objSource.push(argSource[j]);
    };
  };

  const extended = Object.fromEntries(objSource);
  return extended;
};

4.

나머지는 질문사항에 적어두었으니 코드리뷰 후 재정리를 해보자.

 

 

추가

잊지말자! 되새김~

  • var : funtion Scope
    const, let : Block Scope

추가 공부할 부분

  • microtask
  • 매일매일 알고리즘 하나씩 푸는걸 목표로!

 

작성자

Posted by yoonjinho

작성자 정보

개인적인 소회들을 기록합니다.

관련 글

댓글 영역

블로그