🙄 오늘 하려고 했는데 못한 것
재귀함수 시간 도중에 리액트 useMemo 훅을 사용해서 구현하던 메모이제이션의 간단한 설명을 들었음.
첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열
function fibonacci(n) {
if (n <= 0) return 0;
if (n <= 2) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
어마어마하게 많은 연산을 하기 때문에 겁나는 코드
이걸 메모이제이션을 이용해서 연산 시간을 엄청나게 단축 시킬 수 있다.
const memoFibo = (n) => {
if (n <= 0) return 0;
if (n <= 2) return 1; // 1 1 2
if (memoFibo.cache[n]) {
return memoFibo.cache[n];
} else {
return (memoFibo.cache[n] = memoFibo(n - 1) + memoFibo(n - 2));
}
};
memoFibo.cache = {};
함수도 객체이기 때문에, cache라는 객체를 프로퍼티로 넣은 것임
값을 순차적으로 cache 객체에 집어넣고 이미 존재하고 있는 캐시값을 빼와서 값을 다시 지정하는 것이기 때문에? 연산 횟수가 화악 줄어든다.
객체들의 모든 열거 가능한 자체 속성을 복사하는 메서드. 그 후 대상 객체를 반환함
const copydObject = (object) => Object.assign({}, object);
// function copydObject(object){
// return Object.assign({},object)
// }
let total = 0;
for (let [key, value] of Object.entries(salaries)) {
console.log(key); // John Ann Pete
// console.log(keyValue);
// let key = keyValue[0];
// let value = keyValue[1];
total += value;
}
console.log(total); // 690
그래도 여러 번 해봤다고 생각했던 구조 분해 할당인데, 낯선 것들 여러 개 합쳐져 있으니 눈이 핑글핑글 돌았다...
일이 좀 있어서 오늘은 공부를 거의 못했다