본문 바로가기
개발 일지

S1: stringify 재귀함수로 만들기

by StelthPark 2021. 9. 27.

stringify로 들어오는 값을 재귀함수로 풀어주기 위해

우선 들어오는 값이 어떤 type를 가지는지가 중요하다 타입에 따라 다르게 값을 변환해야하므로

typeof로 값의 타입에 따라 조건문을 적용시킨다. 또한 들어오는 값이 함수거나 undefined일시 undefined로 반환한다.

들어오는 값이 함수거나 undefined일시 undefined로 반환한다.

 

들어오는 값이 배열일 시 배열의 길이가 0이면 문자[ ]을 반환 아닐시 for문을 돌려 배열안 각 요소를 재귀함수를 돌려 분해하여 temp에 push한다. 완성된 temp를 문자열로 바꾸며 앞뒤로 문자 [ , ] 를 붙여 반환시킨다.

 

그 밖에(else if) 들어오는 값이 객체일시 객체의 길이가 0으로 빈 객체일시 문자 { } 를 반환하고 빈객체가 아닐시 객체안의 key이름들을 for문으로 돌리게 되는데 만약 객체안에 든 각 키의 값들이 함수이거나 undefined일시 문자 { }를 반환하며 정상적인 값일시 key이름은 재귀함수로 문자로 걸러내며 값들도 재귀함수로 문자로 걸러내어 할당한다. 그리고 빈문자열 str에 각 값들을 저장시키는데 사이사이 마다 , 를 붙여 저장시킨다

 

저장된 str은 문자마다 뒤에 ,이 붙어 마지막에 ,로 끝나게 되니 0인덱스부터 마지막 전 인덱스까지 slice로 추출하여 할당한뒤 앞뒤로 문자 { , } 를붙여 반환한다.

 

위에서 객체나 배열일때 재귀함수로 보낼때마다 이 구문에서 들어온 값들이 string일시 "를 앞뒤로 붙여 반환하도록 작성되어 있다. 이외에도 문자들은 "를 앞뒤로 붙여 반환하게 되며 마지막으로 obj를 문자열로 반환하게 된다.

댓글