함수형코딩 359~383 (32,33일차)
function update(object, key, modify){
const value = object[key]
const newValue = modify(value)
const newObject = ObjectSet(object, key, newValue);
return newObject
}
중첩된 Object의 경우 조회1-조회2-변경-설정2-설정1 순서로 작업한다.
조회1-조회2-변경-설정2-설정1 해당 부분에서
조회1-조회2-변경-설정2-설정1 안쪽 조회 변경 설정을 update함수로 감싸준다.
function nestObject(){
return update(){
return update()
}
}
function nestedUpdate(object, keys, modify){
if(keys.length === 0){
return modify(object)
}
const key1 = keys[0];
const restOfkeys = drop_first(keys);
return update(object, key1, function(value1){
return nestedUpdate(value1, restOfkeys, modify);
}
}
안전한 재귀 사용법
1. 종료 조건
2. 최소 하나의 재귀 호출
3. 종료 조건에 다가가기