์ฌ๊ท ํจ์๋ ? ์๊ธฐ ์์ ์ ํธ์ถํ๋ ํจ์๋ฅผ ๋งํ๋ค.
function arrSum(arr) {
// base case : ๋ฌธ์ ๋ฅผ ๋ ์ด์ ์ชผ๊ฐค ์ ์๋ ๊ฒฝ์ฐ (์ฌ๊ท์ ๊ธฐ์ด)
if (arr์ ๊ธธ์ด๊ฐ 0์ธ ๊ฒฝ์ฐ) {
return 0;
}
// recursive case : ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ
return ์์1 + arrSum([์์2, ... , ์์n]);
}
JavaScript Object Notation์ ์ค์๋ง
๋ฐ์ดํฐ ๊ตํ์ ์ํด ๋ง๋ค์ด์ง ๊ฐ์ฒด ํํ์ ํฌ๋งท์ด๋ค.
์ ์ก ๊ฐ๋ฅํ ์กฐ๊ฑด (transferable condition)
JSON.stringify : ๊ฐ์ฒด๋ฅผ JSON์ผ๋ก ๋ณํํฉ๋๋ค.
stringify๊ณผ์ - ์ง๋ ฌํ(serialize)let getMessage = JSON.stringify(message) console.log(getMessage) // `{"name" : "kimcoding", "message" : "hello"}` console.log(typeof(getMessage)) // `string`
JSON.parse : JSON์ ๊ฐ์ฒด๋ก ๋ณํํฉ๋๋ค.
JSON.parse๊ณผ์ - ์ญ์ง๋ ฌํ(deserialize)let output = `{"name" : "kimcoding", "message" : "hello"}` let obj = JSON.parse(output) console.log(obj) /* * { * name: "kim", * message: "hello", * } */ console.log(typeof(obj)) // `object`
๊ณผ์ 1 - JSON.stringify ๐
function stringifyJSON(obj) { // your code goes here // 1. number, boolean, null // 2. string // 3. ๋ฐฐ์ด [] array // 4. ๊ฐ์ฒด {} object if(typeof obj === "number" || typeof obj === "boolean" || obj === null) { return `${obj}`; } if(typeof obj === "string") { return `"${obj}"`; } if(Array.isArray(obj) === true) { let result = ''; for(let i of obj) { result = result + stringifyJSON(i) + ","; } result = result.slice(0, result.length -1); // ๋ง์ง๋ง ์ผํ ์ง์ฐ๊ธฐ return `[${result}]`; } if(typeof obj === 'object') { let result = ''; for(let i in obj) { if(typeof obj[i] === 'function' || obj[i] === undefined) { return "{}"; } result = result + stringifyJSON(i) + ":" + stringifyJSON(obj[i]) + ","; } result = result.slice(0, result.length -1) // ๋ง์ง๋ง ์ผํ ์ง์ฐ๊ธฐ return `{${result}}`; } };
html๊ตฌ์กฐ
const root = document.getElementById('root');
function createTreeView(menu, currentNode) {
// TODO: createTreeView ํจ์๋ฅผ ์์ฑํ์ธ์.
// li
// input - checkbox
// span - name
// ul
for(let i = 0; i < menu.length; i++) {
const li = document.createElement('li');
if(menu[i].children) {
const input = document.createElement('input');
input.type = 'checkbox';
const span = document.createElement('span');
span.textContent = menu[i].name;
const ul = document.createElement('ul');
li.append(input, span, ul);
currentNode.append(li);
createTreeView(menu[i].children, ul)
} else {
li.textContent = menu[i].name;
currentNode.append(li);
}
}
};
์ฒ์์ ๋๋ฌด ๋นํฉํ๋ค. ๊ฐ๋ ์ ๋ด๋ ์ดํด๋ฅผ ๋ชป ํ์๋๋ฐ, ๋ฌธ์ ๋ฅผ ํ์ด์ผ ํ๋ ์ํฉ์ ๋์ฌ ๊ฑฑ์ ์ด ๋ง์ด ๋ค์๋ค. ์ค๋ ์์ ๋ค ํ ์ ์์์ง.. ์ธํฐ๋ท ๊ฒ์์ ํด๋ณด๊ธฐ๋ ํ๊ณ ํ์ด์ ์๋ก ๊ณต์ ํ๋ฉด์ ์ด์ฐ์ด์ฐ ํ์ด๋๋ค. ๋ ๋ค๋ฅธ ์๋ก์ด ํจ์๋ฅผ ๋ฐฐ์ฐ๊ฒ ๋ผ์ ์๋กญ์ง๋ง ์ด๋ ค์ด ๋ถ๋ถ์ด๋ผ ๋ณต์ต์ ํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ์ฌ๊ท ๊ด๋ จ๋ ์ฝํ ๋ฌธ์ ๋ฅผ ๊ณต์ ๋ฐ์ ๋ฐ๋ก ํ์ด๋ณผ ์์ ์ด๋ค.