2020.코딩일지
[자료구조/알고리즘] 재귀Stringify.JSON [BEB 6th]012일차 본문
728x90
코드스테이츠 블록체인 부트캠프 6기
● 타입별 분류 ("number", "string", "boolean", "object"안에서 "객체", '배열', 'null'구분확인, "function", "undefined")
🥺objec가 너무 광범위하다...
● object중 배열은 Array.isArray를 써서 구별.
let arr = [];
for(let i in obj) { //{a:1, b:2, c:3}
const rec = stringifyJSON(obj[i]);//값을찾아서
//rec => 1 "1" 2 "2"
arr.push(`"${i}":${rec}`)
}
result = `{${arr}}`
● `text ${} text`
단, 백틱안에 배열[]이 들어가면 벗겨져서 나옴;;;; let arr = []; 새배열에 하나씩 넣어주기
for (let i=0; i<obj.length; i++) {
const rec = stringfyJSON(obj[i]); //우리는재귀를배우는중이니깐!
arr.push(rec);
}
result = `[${rec}]` //백틱에서는 []배열이벗겨지니까 텍스트로 넣어드림
(예)
let result = ""; //아예쌍따옴표로 빈공간 만들어놓고 여기안에 들어가랏!!!!
result = `${obj}`; //9가 문자열 "9"로 반환 (number, boolean, null)
object의 [i]즉, key가 하나씩 나온다.
우리가 원하는 형식으로 만들어주고 (여러개의 키값이 계속 뒤에 하나씩 추가되기때문에)
필요한 키값쌍을 잘라서 obj2에 가져와요 다시
return해드릴게
전체코드
function stringifyJSON(obj) {
if(typeof obj === 'function' || typeof obj == 'undefined'){
return undefined;
}
if(Array.isArray(obj)){
let temp = [];
if(obj.length === 0){
return '[]';
}
else{
for(let i = 0; i < obj.length; i++){
temp.push(stringifyJSON(obj[i]));
}
}
return '[' + String(temp) + ']';
}
else if(typeof obj === 'object' && obj !== null){
let str ='';
if(Object.keys(obj).length === 0){
return '{}';
}else{
for(let prop in obj){
if(typeof obj[prop]=='function' || obj[prop] === undefined){
return '{}';
}
let p = stringifyJSON(prop);
obj[prop] = stringifyJSON(obj[prop]);
str += p+':'+obj[prop];
str +=',';
}
str=str.slice(0,-1);
return '{'+str+'}';
}
}
else if(typeof obj === 'string'){
return '\"' + obj + '\"';
}
return String(obj);
}
🤖감사해용선조님 고마워용마이엕
'algorithm' 카테고리의 다른 글
[자료구조] Stack & Queue & Graph [BEB 6th]013일차 (0) | 2022.07.22 |
---|---|
[자료구조/알고리즘] 재귀TreeUI [BEB 6th]012일차 (0) | 2022.07.21 |
코플릿[자료구조/알고리즘] 재귀적 사고 연습하기 [BEB 6th]011일차 (0) | 2022.07.19 |
[자료구조/알고리즘] 재귀.JSON [BEB 6th]011일차 (0) | 2022.07.19 |
백엔드로드맵 (0) | 2022.01.03 |
Comments