• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

localstorage 질문입니다

23.02.03 08:56 작성 조회수 243

0

 localStorage에 저장을 하려면 숫자, 문자로 변환해야 저장할 수 있습니다.

하지만, 배열은 string함수를 써서 문자로 변환할 수가 없어서 JSON 함수를 활용하여 문자로 저장한다고 하셨는데,

왜 배열은 문자로 변환할 수 없나요? 구글링 해보니깐 tostring은 문자를 변환할 수 있다고 하고... 이해가 잘 안갑니다.

답변 1

답변을 작성해보세요.

0

otter님의 프로필

otter

2023.02.03

안녕하세요 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()과 같은 메서드를 사용한 배열 데이터의 문자열 변환 자체가 불가능한 것은 아닙니다.

하지만 이는 배열의 형태를 잃게 되기 때문에 "완벽한 형 변환은 불가능하다"라고 이해해 주시면 될 것 같습니다.

 

감사합니다 :)