2017-02-09 3 views
2

Ich versuche, Speicher auf dem Computer des Benutzers mit localStorage("save","{teams:5, points:20} usw. zu setzen. Aber ich bin nicht sicher, ob der Wert ein Objekt sein kann. Ich habe das Internet überprüft, aber ich kann keine klaren Antworten finden.Kann ein localStorage-Wert ein Objekt oder Array sein?

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

Gedanken?

Antwort

4

Nein, der Schlüssel und der Wert müssen DOMString sein. Siehe https://developer.mozilla.org/en-US/docs/Web/API/Storage/setItem

Was können Sie tun serialise ist Ihre Daten als JSON, bevor Sie es

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

Wenn der Wert lesen, können Sie analysieren es zurück in ein Objekt

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

... nitpicking, aber über * "muss" *, können Sie nicht DOMString Werte übergeben, aber ihre 'toString()' Ergebnis wird gespeichert. – Kaiido

+1

@Kaiido Ich denke, APIs wie ein Vertrag – Phil

2

lokalen Speicher beschränkt, um nur String-Schlüssel/Wert-Paare zu behandeln, können Sie wie folgt unter Verwendung von JSON.stringify und beim Abrufen von Wert JSON.parse

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

// Setzen Sie das Objekt in dem Speicher

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

// das von Speicherobjekt abrufen

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

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

Nein, es kann nicht sein, aber Sie können stringify verwenden. Zum Beispiel:

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

Sie benötigen die localStorage.setItem(keyName, keyValue);

für ein Objekt speichern verwenden möchten, können Sie die Verwendung von JSON.stringify(object), die konvertiert das Objekt in einen String machen.

Von MDN

keyName
A DOMString den Namen des Schlüssels Sie wollen erstellen/aktualisieren enthält.

keyValue
A DOMString mit dem Wert, den Sie wollen geben den Schlüssel Sie erstellen/Aktualisierung.

1

Nein, localstorage nimmt String als und speichert es. Wenn Sie ein Objekt speichern möchten, dann konvertieren Sie es in eine Zeichenfolge und speichern Sie es dann. beim Abrufen aus dem lokalen Speicher erhalten Sie Zeichenfolge. Sie können es leicht in ein Objekt umwandeln. Wenn Sie ein Objekt direkt in localStorage speichern, wird es auf diese Weise "[object Object]" gespeichert und beim Abrufen von localStorage erhalten Sie "[object Object]" als String.

Falscher Code:

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

Sie bekommen "[object Object]"

Rechts Code:

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") 

Während Wert von localstorage Abrufen

Falscher Code:

localStorage.getItem("save") 

Es wird Daten in Form von String holen.

Rechts Code:

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

Es werden die Daten in Form von Objekt zurückgeben.

Ich hoffe, die Lösung ist gut erklärt.

Verwandte Themen