localstorage 질문입니다
localStorage에 저장을 하려면 숫자, 문자로 변환해야 저장할 수 있습니다.
하지만, 배열은 string함수를 써서 문자로 변환할 수가 없어서 JSON 함수를 활용하여 문자로 저장한다고 하셨는데,
왜 배열은 문자로 변환할 수 없나요? 구글링 해보니깐 tostring은 문자를 변환할 수 있다고 하고... 이해가 잘 안갑니다.
답변 1
0
안녕하세요 beth517님!
배열 혹은 객체와 같은 참조 타입 데이터의 경우 문자열로 변환하게 되면 그 형태를 잃게 됩니다.
우리는 localStorage에 데이터를 저장하고 이후 필요할 때마다 저장 되었던 형태 그대로를 다시 가져와 로직에 적용시켜야 하죠?
배열에 toString() 메서드, String() 함수 등을 사용해 문자열로 변환을 시도하면 아래와 같이 배열의 형태를 잃게 됩니다.
const arr = [1, 2, 3, 4, 5]
const changed = String(arr)
console.log(changed) // '1,2,3,4,5'
심지어 객체는 데이터 자체를 잃게 되죠.
const obj = {name:'Lee', role:'backend-developer'}
const changed = String(obj)
console.log(changed) // [ object Object ]
때문에 배열, 객체의 모양을 유지한 채 localStorage에 저장될 수 있도록 문자열 변환을 시도해야 합니다.
이때, 우리는 JSON 형태로의 형 변환을 시도하여 문자열 변환이 가능하죠.
const arr = [1, 2, 3, 4, 5]
const changed = JSON.stringify(arr)
const restored = JSON.parse(changed)
console.log(changed) // '[1,2,3,4,5]'
console.log(restored) // [1, 2, 3, 4, 5]
결론적으로, toString()과 같은 메서드를 사용한 배열 데이터의 문자열 변환 자체가 불가능한 것은 아닙니다.
하지만 이는 배열의 형태를 잃게 되기 때문에 "완벽한 형 변환은 불가능하다"라고 이해해 주시면 될 것 같습니다.
감사합니다 :)
강의 내용 PPT 제공
0
177
2
openweather 401 오류 지속적으로 발생해요..ㅠ
0
382
3
Geolocationposition 오류
1
523
1
for of, for in 강의에서
0
218
1
선생님 remaining 질문입니다.
0
232
1
ppt 제공
0
327
1
혹시 프론트, 백엔드 코스랑 강의가 겹치나요?
0
535
2
display:flex의 의미
0
431
1
반복문을 활용한 날짜 데이터 리팩토링
0
287
2
JS로 HTML. CSS 조작
0
256
1
조건에 따른 메시지 출력 강의
0
183
1
locallhost
0
477
2
객체 속성 접근시 브라켓 이용(vs. 닷 오퍼레이터)
0
255
1
interval에 대한 질문입니다.
0
279
2
이해가 안되는 부분..
0
402
2
강의 보며 작업한 코드를
0
395
1
제대로 이해한건지 모르겠어요..
0
323
2
강의자료 부탁드립니다.
0
480
1
Uncaught TypeError: Cannot set properties of null (setting 'textContent')
0
5068
1
openweather api 2.5 관련 질문드립니다
0
749
2
openweather 401에러
0
520
1
createTodo함수 안에 매개변수
0
245
1
contents : complete : 가 무슨뜻인가요?
0
258
2
Javascript Exercise 깃허브에 푸쉬
0
353
1





