2017-02-09 3 views
2

Я пытаюсь установить хранилище на компьютере пользователя с помощью localStorage("save","{teams:5, points:20} и т. Д. Но я не уверен, может ли это значение быть объектом. Я проверил Интернет, но я не могу найти там четких ответов.Может ли значение localStorage быть объектом или массивом?

var data={ 
teams:5, points:25,team1:5,team2:10, team3:5, team4:0, team5:5}; 
localStorage ("save", data); 

Мысли?

ответ

4

Нет, ключ и значение должны быть DOMString. См https://developer.mozilla.org/en-US/docs/Web/API/Storage/setItem

Что вы можете сделать, это сериализация данных как JSON перед установкой его

localStorage.setItem('save', JSON.stringify(data)) 

При чтении значения, вы можете разобрать его обратно в объект

let saveData = JSON.parse(localStorage.getItem('save')) 
+2

... nitpicking, но о * "must" *, вы можете передавать значения не DOMString, но их результат 'toString() будет сохранен. – Kaiido

+1

@ Kaiido Я склонен думать о API как о контракте – Phil

2

локального хранения ограниченные для обработки только пары строк/значений, которые вы можете сделать, как показано ниже, используя JSON.stringify и при получении значения JSON.parse

var testObject = { {name:"test", time:"Date 2017-02-03T08:38:04.449Z"} }; 

// Поместите объект в хранилище

localStorage.setItem('testObject', JSON.stringify(testObject)); 

// Получить объект из хранилища

var retrievedObject = localStorage.getItem('testObject'); 

console.log('retrievedObject: ', JSON.parse(retrievedObject)); 
0

Нет, это не может быть, но вы можете использовать stringify. Например:

localStorage.setItem('user', JSON.stringify(r.user)); 
0

Вы должны использовать localStorage.setItem(keyName, keyValue);

для хранения объекта, вы можете использовать JSON.stringify(object), который преобразует объект в строку.

От MDN

KEYNAME
DOMString, содержащая имя ключа, который вы хотите создать/обновить.

KeyValue
DOMString, содержащий значение, которое вы хотите дать ключ вы создаете/обновления.

1

Нет, localstorage принимает строку как и сохраняет ее. Если вы хотите сохранить любой объект, тогда конвертируйте его в строку и затем сохраните. , выбирая его из локального хранилища, мы получаем строку. вы можете легко скрывать его в объекте. Если вы непосредственно сохраняете объект в localStorage, тогда он будет сохранен таким образом «[object Object]» и, получая его из localStorage, вы получите «[object Object]» as String.

Неправильный код:

var data={teams:5, points:25,team1:5,team2:10, team3:5, team4:0, team5:5}; 
localStorage.setItem("save", data); 
localStorage.getItem("save") 

вы получите "[объект Object]"

Right Код:

var data={teams:5, points:25,team1:5,team2:10, team3:5, team4:0, team5:5}; 
localStorage.setItem("save",JSON.stringify(data)); 
localStorage.getItem("save") 

В то время как извлечение значения из LocalStorage

Неправильный код:

localStorage.getItem("save") 

Он будет получать данные в виде строки.

Right Код:

JSON.parse(localStorage.getItem("save")) 

Он будет возвращать данные в виде объекта.

Надеюсь, что решение хорошо объяснено.

Смежные вопросы