Tiny Bunny
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป/Javascript

[JS] ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€(LocalStorage) / JSON - Object ํƒ€์ž… ๋ณ€ํ™˜

by soonybutter 2025. 3. 7.
728x90

 

 

๋ชฉ์ฐจ

1. localStorage

2. localStorage์™€ JSON

 

 

 


 

1. ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€ ๊ฐœ๋…

 

 localStorage๋ž€ ํฌ๋กฌ๊ณผ ๊ฐ™์€ ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

์ฆ‰ ์›น ์ƒ์— ์šฐ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๐Ÿ’ก

 

 

๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ์•„๋„ ์ €์žฅ๋˜์—ˆ๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์†ํ•ด์„œ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ณดํ†ต์€ ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ์ •๋ณด๋‚˜ ์„ค์ • ๋“ฑ์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ,

Key- Value ๊ฐ’์˜ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

localStorage.setItem("ํ‚ค", "๊ฐ’");

 

ํ‚ค์—๋Š” ๋‚ด๊ฐ€ ์ €์žฅํ•˜๊ณ  ์‹ถ์€ DB ๋คํƒฑ์ด์— ์ด๋ฆ„์„ ์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๊ณ , 

๊ฐ ๊ฐ’์€ ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ์˜๋ฏธํ•œ๋‹ค.

 

 

 

ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ local Storage ๊ฐ’ ํ™•์ธํ•˜๊ธฐ

ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ localStorage๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด

ํฌ๋กฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ localStorage ๊ฐ’์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1. ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ € ํ•ด๋‹น ํŽ˜์ด์ง€์—์„œ 'F12' ํ‚ค ๋ˆŒ๋Ÿฌ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋ฅผ ์—ฐ๋‹ค.

2. 'Application' ํƒญ ์„ ํƒ

3. Storage > localStorage ์˜์—ญ์—์„œ ํ™•์ธํ•˜๋ ค๋Š” ๋„๋ฉ”์ธ์„ ์„ ํƒํ•˜๊ณ  ํ•ด๋‹น ๋„๋ฉ”์ธ์˜ localStorage ๊ฐ’์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 

 

์˜ˆ๋ฅผ ๋“ค์–ด,

์›น ๋ธŒ๋ผ์šฐ์ €์˜ ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€๋ฅผ ํ™œ์šฉํ•˜์—ฌ

์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด์„œ ๋กœ๊ทธ์ธ์„ ์„ฑ๊ณตํ–ˆ์„๋•Œ ํ•ด๋‹น ์•„์ด๋””๋ฅผ ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•˜๊ณ ,

์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค์Œ์— ๋™์ผํ•œ ํŽ˜์ด์ง€์— ๋ฐฉ๋ฌธํ•˜๋ฉด

์•„์ด๋”” ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ์ด์ „์— ์ž…๋ ฅํ–ˆ๋˜ ์ •๋ณด๋ฅผ ๊ทธ๋Œ€๋กœ ๋„์›Œ์ฃผ๋„๋ก ๊ตฌํ˜„ ํ•˜๋Š” ๋ฐฉ์‹์ฒ˜๋Ÿผ ์‚ฌ์šฉ์ž์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์ž…๋ ฅ ๋ฐ›๊ณ , localStorage์— ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•ด๋ณด์ž . 

 

 

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="style.css" />
    <title>Momentum App</title>
  </head>
  <body>
    <form id="login-form">
      <input
        required
        maxlength="15"
        type="text"
        placeholder="What is your name?"
      />
      <input type="submit" value="Log In" />
    </form>
    <h1 id="greeting" class="hidden"></h1>
    <script src="app.js"></script>
  </body>
</html>

 

 

๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉ์ž์˜ ์ด๋ฆ„์„ ์ž…๋ ฅ๋ฐ›๋Š” ํ™”๋ฉด์„ ๋งŒ๋“ค๊ณ , ์ž…๋ ฅ์„ ํ•ด๋ณด์ž.

์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ  ์ฝ˜์†”์ฐฝ๊ณผ ์›น ํ™”๋ฉด์„ ํ™•์ธํ•ด๋ณด๋ฉด

์ž…๋ ฅํ•œ ์ด๋ฆ„์ด ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

๊ทธ๋Ÿผ ํฌ๋กฌ ์ฐฝ์„ ๋‹ซ๊ณ  ๋‹ค์‹œ ๋“ค์–ด์™€๋ณด์ž.

ํฌ๋กฌ์„ ๋‹ซ๊ณ  ๋‹ค์‹œ ์—ด์–ด ๋“ค์–ด์™”์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ 

๋ฐฉ๊ธˆ ์ „์— ์ž…๋ ฅํ•œ ์ด๋ฆ„์„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

const loginForm = document.querySelector("#login-form");
const loginInput = document.querySelector("#login-form input");
const greeting = document.querySelector("#greeting");

//String๋งŒ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜: ๋Œ€๋ฌธ์ž๋กœ ์“ฐ๋Š” ๊ด€์Šต
const HIDDEN_CLASSNAME = "hidden";
const USERNAME_KEY = "username";

function onLoginSubmit(event) {
  event.preventDefault();
  loginForm.classList.add(HIDDEN_CLASSNAME);

  const username = loginInput.value;
  localStorage.setItem(USERNAME_KEY,username);
  paintGreetings(username);
}

loginForm.addEventListener("submit", onLoginSubmit);

function paintGreetings(abc){
    
    greeting.innerText = `Hello ${abc}`;
    greeting.classList.remove(HIDDEN_CLASSNAME);
}

const savedUsername = localStorage.getItem(USERNAME_KEY);

console.log(savedUsername);

//localstorage์— ์œ ์ € ์ •๋ณด๊ฐ€ ์—†๋‹ค๋ฉด, form์˜ submit์„ ๊ธฐ๋‹ค๋ฆผ.
if(savedUsername === null){
    //show the form
    loginForm.classList.remove(HIDDEN_CLASSNAME);
    loginForm.addEventListener("submit", onLoginSubmit);
    
}
else{ //localstrage์— ์œ ์ €์ •๋ณด๊ฐ€ ์žˆ๋‹ค๋ฉด, ์œ ์ €์ •๋ณด๋ฅผ ๋ฐ›์•„ ์ธ์ž๋กœ ๋„ฃ์–ด์คŒ.('savedUsername')
    //show the greetings
    paintGreetings(savedUsername);
}

 

ํ๋ฆ„ ์ดํ•ด๋ฅผ ์œ„์— ๊ฐ€์ ธ์˜จ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋‹ค.

์œ„๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๊ป๋‹ค๊ฐ€ ๋‹ค์‹œ ๋“ค์–ด์™€๋„ localStorage๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅํ–ˆ๋˜ ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜ค๋„๋ก ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๋‹ค.

 

1) paintGreetings(username); ์ผ ๊ฒฝ์šฐ

    ์ƒ์ˆ˜ username์˜ loginInput.value๊ฐ€ abc ์œผ๋กœ ๋ฐ›์•„์ง.

 

2) paintGreetings(savedUsername);์ผ ๊ฒฝ์šฐ

    localStorage์—์„œ ๊บผ๋‚ด์˜ค๋Š” ์ƒ์ˆ˜ USERNAME_KEY์— ๋Œ€์‘ํ•˜๋Š” ํ‚ค username์˜ ์ž…๋ ฅ๋œ ์ด๋ฆ„ value๊ฐ€ abc ์œผ๋กœ ๋ฐ›์•„์ง.

   ์ด๋ฅผ ํ†ตํ•ด ์žฌ๋ฐฉ๋ฌธ ์‹œ localStorage์— ๋ฐ์ดํ„ฐ์˜ ์œ ๋ฌด์— ๋”ฐ๋ผ ํ™”๋ฉด์— input์ฐฝ๋งŒ ๋„์›Œ์ฃผ๊ฑฐ๋‚˜ ,

   ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ Hello๋ผ๋Š” ์ธ์‚ฌ์™€ ์ด๋ฆ„์„ ํ™”๋ฉด์— ๋„์›Œ์ฃผ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

 


 

 

 

2.  localStorage์™€  JSON

 

 

1) localStorage๋กœ ์ €์žฅํ•˜๊ธฐ

 

: Object ํƒ€์ž…  String ํƒ€์ž… ๋ณ€ํ™˜

 

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ localStorage.setItem()์„ ์‚ฌ์šฉํ• ๋•Œ, localStorage๋Š” JS์˜ Object๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค.

์ฆ‰, Object ํƒ€์ž…์„ String ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ localStorage์— ์ €์žฅํ•ด์•ผํ•œ๋‹ค.

 

 

Object๋ฅผ String์œผ๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ,  value ๊ฐ’์— [object Object], [object Object] ๋ผ๋Š” ๊ฐ’์ด ๋“ค์–ด๊ฐ„๋‹ค.

 

๋ณ€ํ™˜์€ JSON.stringify()๋กœ ํ•œ๋‹ค.

 

function savePlease() {
  localStorage.setItem(ITEMSAVED_LS, JSON.stringify(itemSaved))
}

 

 

 

2) localStorage์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

 

์›๋ž˜ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜

: JSON.parse();

 

 

localStorage์—์„œ JS๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ์—๋Š” JSON.parse(localstorage key) ๋ฅผ ํ†ตํ•ด ๋ณ€ํ™˜ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

const savedToDos = localStorage.getItem(TODOS_KEY);


if(savedToDos !== null){

    //string์„ ๋‹ค์‹œ array๋กœ ๊บผ๋‚ด๊ธฐ ์œ„ํ•ด parse
    const parsedToDos = JSON.parse(savedToDos);
   
    //item ๊ฐœ์ˆ˜๋Œ€๋กœ ์•„๋ž˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ
    //forEach() : ๋ฐ›์•„์˜จ array๋ฅผ for๋ฌธ ์—†์ด item ํ•˜๋‚˜์”ฉ function์— ๋„ฃ์–ด์คŒ!
    parsedToDos.forEach((item) => console.log("This is the turn of "+ item ));
    //parsedToDos.forEach(sayHello);

   
    toDos = parsedToDos;

    //์ด์ „์— ์ €์žฅํ•ด๋’€๋˜ ๋ฐฐ์—ด์„ ๋ถˆ๋Ÿฌ์™€ ์ถœ๋ ฅํ•จ.
    parsedToDos.forEach(paintToDo);
}

 

 

๋งŒ์•ฝ, localstorage value๋ฅผ object๋กœ ๋ณ€ํ™˜ํ•˜์ง€ ์•Š๊ณ  JS๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด,

๊ฐ’์€ ์ถœ๋ ฅ๋˜์ง€๋งŒ forEach๋ฌธ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

์™œ๋ƒํ•˜๋ฉด ์ฝ”๋“œ ๋‚ด์˜ ๋ณ€์ˆ˜๊ฐ€ object ํƒ€์ž…์ด ์•„๋‹Œ, stringํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  forEach๋ฌธ์€ Array object์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๋ฉ”์„œ๋“œ๋ผ๋Š” ์ด์œ ๋„ ์žˆ๋‹ค.

 

 

 

 

 

๐Ÿ’ก

์ •๋ฆฌํ•˜๋ฉด,

 ๊ฐ’์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ์‹ถ์„๋•Œ?

-> ๋ฐฐ์—ด ํ˜•์‹์œผ๋กœ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.

 

๋ฐฐ์—ดํ˜•์‹์€ string ํ˜•์‹์œผ๋กœ ๋ฐ”๊ฟ”์ค˜์•ผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค. JSON.stringify(); 

๊ทธ๋Ÿผ "["a","b","c"]" ํ˜•์‹์œผ๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฌ๋ฉด ๋ฐฐ์—ด ํ˜•์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

๋”ฐ๋ผ์„œ JSON.parse()๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๊ทธ๋Ÿผ ["a","b","c"] ์˜ ๋ฐฐ์—ด ๋ชจ์Šต์ด ๋œ๋‹ค.

 

์ด๋Ÿฌํ•œ ๋ฐฐ์—ด ํ˜•์‹์—์„œ ํŠน์ • ๊ฐ’์„ ์ฐพ๊ธฐ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ 'id'๊ฐ’ ์ด๋‹ค.

๋ฐฐ์—ด์— id ๊ฐ’์„ ์ •ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ ๋‹ค์‹œ ๊ฐ์ฒด(Object)๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

๊ทธ๋Ÿผ {text:"a", id=" " } ๊ณผ ๊ฐ™์€ ๊ฐ๊ฐ์˜ id๊ฐ€ ๋ถ€์—ฌ๋œ ํ˜•ํƒœ๋กœ ๋ฐ”๋€Œ๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด๋ ‡๊ฒŒ id๋ฅผ ๋งŒ๋“ค์–ด์ค„ ๋•Œ ์ž๋™์œผ๋กœ ์ค‘๋ณต๋˜์ง€ ์•Š๋„๋ก ๋งŒ๋“ค์–ด์ค˜์•ผํ•˜๋Š”๋ฐ,

์ด๋•Œ ์œ ์šฉํ•œ๊ฒŒ Date.now(); ์ด๋‹ค.

 

*Date.now()๋Š” ๊ธฐ์ค€์ด ๋˜๋Š” UTC ๊ธฐ์ค€์œผ๋กœ 1970๋…„ 1์›” 1์ผ 0์‹œ 0๋ถ„ 0์ดˆ๋ถ€ํ„ฐ ํ˜„์žฌ๊นŒ์ง€ ๊ฒฝ๊ณผ๋œ ๋ฐ€๋ฆฌ ์ดˆ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ฆ‰, ๋‚ด ์˜ˆ์ƒ๊ณผ ๋‹ฌ๋ฆฌ ํ˜„์žฌ์˜ ์‹œ๊ฐ„์„ ๋‹ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ

ํŠน์ • ์‹œ์ ์œผ๋กœ๋ถ€ํ„ฐ ๊ฒฝ๊ณผ๋œ ์‹œ๊ฐ„์„ ๋‹ด๊ธฐ ๋•Œ๋ฌธ์— ๋งค๋ฒˆ ๋‹ด๋Š” ๊ฐ’์€ ๊ฐ™์€ ์ˆ˜๊ฐ€ ์—†๊ณ  ๊ณ ์œ ํ•œ ๊ฐ’์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

๋”ฐ๋ผ์„œ key๊ฐ’์€ ์ค‘๋ณต๋  ์ผ์ด ์—†์–ด์ง„๋‹ค.

 

์ด id๊ฐ’์„ html๋‚ด์˜ id๊ฐ’๊ณผ ๋™์ผ์‹œ ํ•ด์ฃผ๊ณ ,

ํ•ด๋‹น id๊ฐ’์„ ์„ ํƒํ•ด์„œ ๊ทธ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ์‹์œผ๋กœ ํŠน์ • ๊ฐ’๋“ค์„ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 


 

โœ… ์š”์•ฝ

1. localStorage๋ž€?

  • ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ์•„๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์ง€๋จ.
  • ์ฃผ๋กœ ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ์ •๋ณด๋‚˜ ์„ค์ • ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ.
  • localStorage.setItem(key, value)๋กœ ์ €์žฅํ•˜๊ณ , localStorage.getItem(key)๋กœ ๋ถˆ๋Ÿฌ์˜ด.

2. localStorage์™€ JSON ๋ณ€ํ™˜

1) localStorage์— ๊ฐ์ฒด ์ €์žฅ

  • localStorage๋Š” ๋ฌธ์ž์—ด๋งŒ ์ €์žฅ ๊ฐ€๋Šฅ
  • ๊ฐ์ฒด(Object)๋ฅผ ์ €์žฅํ•˜๋ ค๋ฉด JSON.stringify() ์‚ฌ์šฉ
  • ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉด [object Object]๊ฐ€ ์ €์žฅ๋จ

2) localStorage์—์„œ ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

  • ์ €์žฅ๋œ ๋ฌธ์ž์—ด์„ ๋‹ค์‹œ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด JSON.parse() ์‚ฌ์šฉ
  • ๋ณ€ํ™˜ํ•˜์ง€ ์•Š์œผ๋ฉด ๋‹จ์ˆœ ๋ฌธ์ž์—ด๋กœ ์ธ์‹๋จ

3) localStorage์—์„œ ๋ฐฐ์—ด ํ™œ์šฉ

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์ €์žฅํ•˜๋ ค๋ฉด ๋ฐฐ์—ด(Array) ํ˜•ํƒœ๋กœ ์ €์žฅ
  • ๋ฐฐ์—ด์„ JSON.stringify()๋กœ ๋ณ€ํ™˜ ํ›„ ์ €์žฅ
  • ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ JSON.parse()๋กœ ๋‹ค์‹œ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜

3. ๊ณ ์œ ํ•œ ID ๊ด€๋ฆฌ (Date.now())

  • ๋ฐ์ดํ„ฐ๋งˆ๋‹ค ๊ณ ์œ  ID ๋ถ€์—ฌ ์‹œ Date.now() ํ™œ์šฉ
  • Date.now()๋Š” 1970๋…„ 1์›” 1์ผ๋ถ€ํ„ฐ์˜ ๊ฒฝ๊ณผ ์‹œ๊ฐ„์„ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ๋ฐ˜ํ™˜
  • ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ID ์ƒ์„ฑ ๊ฐ€๋Šฅ

 

 

 

 

 

*์ฐธ๊ณ  ๋ฐ ์ถœ์ฒ˜

https://developer.mozilla.org/ko/docs/Web/API/Window/localStorage

728x90

TOP

Designed by ํ‹ฐ์Šคํ† ๋ฆฌ