[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
- 매일매일 알고리즘 하나씩 푸는걸 목표로!
댓글 영역