일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- You are running `create-react-app` 5.0.0
- TypeScript
- create-react-app오류
- which is behind the latest release (5.0.1).
- 회고
- 구름톤
- Til
- Today
- Total
비전공 프론트엔드 개발자
회고. 재귀함수 & JSON.stringify & parse 본문
Q. 재귀함수의 의미란?
-> 재귀함수란 자기 자신을 호출하는 함수이다.
Q. 재귀함수는 언제 사용하는게 좋은가?
첫번째. 중첩된 반복문이 많거나 반복문의 중첩 횟수를 예측하기 어려울때 사용된다.
-> 반복문이 여러번 충접된다면 마치 callback hell 같은 코드가 될 수도 있다.
-> 얼마나 반복해야 하는지 안다면 몇번이고 중첩을 하겠지만 만약 데이터가 너무 많아서 몇번 반복해야 할지
감이 안잡힌다면? 이때야 말로 재귀함수를 사용하기 좋은 예시라 할 수 있다.
두번째. 반복문으로 작성된 코드를 더욱 간결하고 이해하기 쉽게 작성하고 싶은 경우.
-> 만약 다섯번을 반복해야 한다고 우리가 이미 알고 있다면 우리는 그냥 다섯번 반복문을 써서
원하는 값을 만들어 낼 수 있을 것이다. 하지만 이는 가독성이 떨어져 코드의 결과를 쉽게 예측하기 어려워진다.
이때 재귀함수를 사용함으로써 같은 패턴의 문제를 작은 단위로 쪼개고 문제를 해결한다면 결과를 예측하기
쉬워질 것이다.
Q. 재귀함수의 탈출조건
-> 재귀 함수의 탈출 조건은 base case에 따라 달라진다.
Q. 제기함수의 base case 와 recursive case 설명.
Base case
-> 탈출 조건이자, 문제를 더 이상 쪼갤 수 없는 경우라고 설명 할 수 있다.
Recursive
-> base case을 통해 재귀함수에서 탈출을 하지 못할 경우 더 작은 문제로 새롭게 정의한다.
Q. JSON.stringify 와 JSON.parse 에 대한 설명
이 두 메서드를 왜 써야하나?
우리는 부득이하게 객체를 문자열로 바꿔야 하는 경우가 생길것이다.
이때 객체는 toString 메서드나 String(data) 와 같은 형변화를 시도한다면 [object,object] 를 보게 될 것이다.
그래서 객체를 문자열로 문자열을 객체로 왓다 갓다 할 수 있는 메서드가 필요한 것이다.
JSON.stringify
-> 객체를 JSON으로 변환한다. ( 타입은 string 이다. ) ( 직렬화 라고도 한다. serialize )
-> JSON.stringify(값, [replacer],[spec])
( replacer 는 배열 혹은 함수가 될 수 있다. spec 은 마지막 문자열을 조절할 수 있다. 이렇게만 알아두자.)
JSON.parse
-> JSON을 객체로 변환한다. ( 타입은 object 이다. ) ( 역직렬화 라고도 한다. deserialize )
-> JSON.parse(값,[reviver])
( reviver 은 함수이며 결과를 반환하기 전에 변형할 수 있게 해준다. )
JSON.parse('{"p": 5}', (key, value) =>
typeof value === 'number'
? value * 2 // 숫자라면 2배
: value // 나머진 그대로
);
// { p: 10 }
예외의 경우...
변환할 문자열이 유효한 JSON이 아닐 경우 SyntaxError를 보냄.
TIL. 22.6.24
더미데이터를 갖고 javascript 에서 DOM을 재귀함수를 사용해서 조작해 보았다.
생각보다 재밌었고, 이럴때 쓸 수 있구나 라고 생각이 들었다.
코플릿 문제를 풀 때는 반복문을 못쓰는 경우가 많아 어려움이 많았는데 반복문 혹은 map() 메서드까지써보니 조금은 재미를 느꼈다.
let exam = {
id:1,
name:"Jade"
}
JSON.stringify(exam)
// '{"id":1,"name":"Jade"}'
새로 알게된 조금은 흥미로운 사실을 예시로 만들어 보았다.
JSON.stringify() 메서드를 통해 객체를 string 형태로 변환해 주었다.
exam 예시를 보면 key 는 전부 따옴표를 쓰지 않았다.
결과를 보면 key에 따옴표가 생긴다. 여기까지는 이미 알고있는내용,
하지만 숫자 1 을 보면 따옴표시가 안되어 있는 것을 볼 수 있다. 이는 숫자 타입은 아니고, 문자타입이 맞다
하지만 "1" 과 1 은 엄연히 타입이 다르고, 이는 우리가 필요시 알 수 있어야 한다.
-> 결과를 보고 우리는 1이라는 값이 문자타입으로 들어간게 아닌 숫자로 들어갔구나 라는걸 알 수 있게 해준다.
JSON은 JavaScript 와 다른 규칙을 갖고있다. 항상 명심하자!!
재귀함수를 사용할때 반드시 기억하고 참고해야 하는 키워드 문장 3가지!
1. 문제를 잘게 쪼개본다.
2. 1번과 같은 방식으로 문제가 더 이상 작아지지 않을 때 까지 잘개 쪼개본다.
3. 가장 작은 단위의 문제를 풀어봄으로써 재귀함수를 호출한다.
재귀함수의 사고를 높히기 위한 몇가지 팁
1. 재귀함수의 입력값과 출력값을 정의한다.
-> 문제를 가장 추상적으로 또는 가장 단순하게 정의해 보는 것이다.
2. 문제를 쪼개고 경우의 수를 나누기
-> 문제를 어떤식으로 쪼갤지 생각해보고 정한 방법으로 가장 작은 경우와 큰 경우로 구분할 수 있는지 확인해본다.
( 일반적으로 입력값을 이 기준으로 정한다. )
3. 단순 문제 해결
-> 문제를 여러 경우로 정의한 다음, 가장 쉬운 문제부터 해결해 본다. ( base case === 탈출조건 )
'회고' 카테고리의 다른 글
회고. 22.07.26 (0) | 2022.07.28 |
---|---|
회고. 22.07.12 (0) | 2022.07.14 |
회고. 22.07.07 (0) | 2022.07.08 |
회고. 22.07.06 (0) | 2022.07.05 |
Web Server 기초 express 및 http 로 간단한 서버 만들기 회고 (0) | 2022.06.20 |