S3) Unit 1. [μ€μ΅] JSON.stringify
π£ μ¬κ·λ‘ JSON.stringify λ©μλ ꡬννκΈ°
1οΈβ£ Test 쑰건
β κ°μ²΄λ λ¬Έμμ΄ "9"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "null"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "true"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "false"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ ""Hello world""λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "[]"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "[8]"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "["hi"]"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "[8,"hi"]"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "[1,0,-1,-0.3,0.3,1343.32,3345,0.00011999]"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "[8,[[],3,4]]"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "[[[["foo"]]]]"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "{}"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "{"a":"apple"}"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "{"foo":true,"bar":false,"baz":null}"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "{"boolean, true":true,"boolean, false":false,"null":null}"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "{"a":{"b":"c"}}"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "{"a":["b","c"]}"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "[{"a":"b"},{"c":"d"}]"λ‘ λ³νλμ΄μΌ ν©λλ€
β κ°μ²΄λ λ¬Έμμ΄ "{"a":[],"c":{},"b":true}"λ‘ λ³νλμ΄μΌ ν©λλ€
β ν¨μμ undefinedλ stringifyλμ§ μμ΅λλ€.
2οΈβ£ μμ± μ½λ
function stringifyJSON(obj) {
// your code goes here
// 1. numberλ null, booleanμ κ·Έλ₯ StringμΌλ‘ λ³νν΄μ μΆλ ₯
if(typeof(obj) === 'number' || obj === null || typeof(obj) === 'boolean') return String(obj);
// 2. stringμ ""μμμ μΆλ ₯
else if(typeof(obj) === 'string') return `"${obj}"`;
// 3. undefined, function μ stringift ν΄μλ μλλ€.
else if(typeof(obj) === 'undefined' || typeof(obj) === 'function') return 0;
// 4. λ°°μ΄μΈ κ²½μ° μμ λλ©΄μ μμ κ°κ°μ stringifyJSON ν¨μμ λ΄μμ JSONμΌλ‘ λ³ν κ°μ λ€μ λ°°μ΄μ λ°μμ λ°ν
else if(Array.isArray(obj)) {
const answer = [];
for(let i of obj){
let temp = stringifyJSON(i);
answer.push(temp);
}
return `[${answer}]`;
}
// 5. κ°μ²΄μΈ κ²½μ°λ λ°°μ΄μ΄λ λΉμ·νκ², λμ ν€/κ°μ λ λ€ JSONμΌλ‘ λ³νν΄μ€μΌν¨.
else if(typeof(obj) === 'object'){
let answer = '';
const keys = Object.keys(obj);
const values = Object.values(obj);
for(let i=0; i<keys.length; i++){
if(typeof(values[i]) === 'undefined' || typeof(values[i]) === 'function') return '{}';
let newKey = stringifyJSON(keys[i]);
let newValue = stringifyJSON(values[i]);
if(i !== 0) answer += ',' + newKey + ":" + newValue;
else answer += newKey + ':' + newValue;
}
return `{${answer}}`;
}
};