● 오늘 공부한 것
- 재귀
stringify.JSON.js
function stringifyJSON(obj) {
// your code goes here
if(typeof obj === 'number' || typeof obj === 'boolean' || obj === null) return `${obj}`;
if(typeof obj === 'string') return `"${obj}"`;
if(Array.isArray(obj)){
const arr = []
for(let el of obj){
arr.push(stringifyJSON(el));
}
return `[${arr}]`
}
if(typeof obj === 'object'){
let newObj = '';
for (let key in obj){
let newKey = stringifyJSON(key);
let newVal = stringifyJSON(obj[key]);
if (!(newKey === undefined || newVal === undefined || typeof newVal === 'function')){
newObj += `${newKey}:${newVal},`
}
}
return `{${newObj.slice(0, newObj.length-1)}}`
}
}
왜 function 타입일때와 undefined는 처리를 해주지 않을까에 대한 고민을 했는데, 생각해보니 함수를 실행할 때 리턴값이 없으면 늘 undefined를 출력한다는 걸 생각하지 못했다.
stringify.JSON.js
function createTreeView(menu, currentNode) {
// TODO: createTreeView 함수를 작성하세요.
for (let element of menu) {
const li = document.createElement('li');
if (element.children) {
const input = document.createElement('input');
input.setAttribute('type', 'checkbox');
const span = document.createElement('span');
span.textContent = element.name;
const ul = document.createElement('ul');
li.append(input, span, ul);
currentNode.append(li);
createTreeView(element.children, ul);
} else {
li.textContent = element.name;
currentNode.append(li);
}
}
}