2016-04-12 11 views
-1
var x = JSON.parse(localStorage.getItem('x')).length || 0; 

Der obige Code hat einen Fehler. die || funktioniert in diesem Fall nicht, frage ich mich warum. Eigentlich kann ich das mitOR-Operator zu undefined in Javascript

var x = JSON.parse(localStorage.getItem('x'); 
if(x.length){ 
    x = JSON.parse(localStorage.getItem('x').lengt6h 
} 

tun, aber das sind 4 Zeilen Code. Gibt es eine Möglichkeit, dies in einer Zeile zu tun?

+2

Was ist der Fehler, den Sie sehen? –

+0

'lengt6h' ......? –

+0

Was ist undefiniert? –

Antwort

0

Dies sollte funktionieren. Sie müssen fragen, ob der Artikel x von localStorage nicht null ist, bevor Sie die Länge fragen.

var array = [{ 'one': 1, 'two': 2, 'three': 3 }, { 'four': 4, 'five': 5, 'six': 6 }]; 
localStorage.setItem('x', JSON.stringify(array)); 
if(localStorage.getItem('x') != null) var x = (JSON.parse(localStorage.getItem('x'))).length; 
+0

Wenn Sie auf diese Weise überprüfen, ist es nicht notwendig, dass die Null korrekt ist? –

+0

Welchen Wert erwarten Sie für 'x'? – NiZa

+0

die Anzahl der Elemente in meinem Array-Objekt. –

0

ein Kurz Versuchen Sie, wenn:

var x = JSON.parse(localStorage.getItem('x')).length != 0 ? JSON.parse(localStorage.getItem('x')).length : 0 
1

localStorage.getItem() wird null zurück, wenn der Schlüssel nicht gefunden wird, und analysieren kann, dass nicht mögen. Aber ein leeres Array sollte in Ordnung sein.

var x = JSON.parse(localStorage.getItem('x') || '[]').length; 

Mit JSON.parse auf einem null Wert zurückgibt null. Und der Aufruf length auf null wirft den Fehler.