2020.코딩일지

[자료구조/알고리즘] 재귀Stringify.JSON [BEB 6th]012일차 본문

algorithm

[자료구조/알고리즘] 재귀Stringify.JSON [BEB 6th]012일차

개발하는라푼젤 2022. 7. 21. 23:24
728x90
코드스테이츠 블록체인 부트캠프 6기 

null 마저도 object ㅎㄷㄷ

● 타입별 분류 ("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)

 

방법1

object의 [i]즉, key가 하나씩 나온다.

우리가 원하는 형식으로 만들어주고 (여러개의 키값이 계속 뒤에 하나씩 추가되기때문에)

필요한 키값쌍을 잘라서 obj2에 가져와요 다시 

return해드릴게

 

방법2

 

 

전체코드

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);
}

🤖감사해용선조님 고마워용마이엕

Comments