2013-04-04 4 views
0

J'ai essayé de stocker un tableau dans localStorage mais ensuite j'ai lu que c'était impossible. Alors j'ai essayé:Comment stocker array avec localStorage (extension Chrome)?

array = {}; 
    array.name =  $('[name="name"]').val(); 
    array.username = $('[name="username"]').val(); 
    array.password = $('[name="password"]').val(); 

    alert(localStorage['accounts']); 
    local = JSON.parse(localStorage['accounts']); 
    localu = local.push(array); 
    alert(JSON.stringify(localu)); 

En fait, les scripts arrête à la première alerte Wich retourne « [] » (je mets précédemment que la valeur pour vérifier le résultat).

Pourquoi mon script ne fonctionne-t-il pas?

+0

Pourquoi 'array 'n'est-il pas un tableau? (ce n'est pas le problème) – NickSlash

+0

'array' est un tableau Oo' array = {}; 'Il pense de même que' array = new Array', non? – Codel

+0

No. '{}' est un littéral d'objet, identique à 'new Object'. '[]' est le tableau littéral, identique à 'new Array'. Les tableaux Javascript ne peuvent pas contenir de paires clé: valeur. – thefrontender

Répondre

0

JavaScript, {} est un objet. [] est un tableau.

var array = [] et var array = new Array() faire la même chose.

Un tableau est un conteneur ordonné de choses, chaque valeur a un index et non une clé.

Un objet est un conteneur nommé, chaque "substance" a une clé. Votre array est définitivement un objet.

var data = {}; 
data.name =  $('[name="name"]').val(); 
data.username = $('[name="username"]').val(); 
data.password = $('[name="password"]').val(); 

alert(localStorage['accounts']); 
// > undefined OR the value 
local = JSON.parse(localStorage['accounts']); 
// local contains a parsed version of localStorage['accounts'] 
localu = local.push(array); 
// localu = 0 (push returns the length i think?) 
alert(JSON.stringify(localu)); 

Essayez les solutions suivantes. Je ne l'ai pas testé, mais ça pourrait marcher.

var data = {}; 
data.name =  $('[name="name"]').val(); 
data.username = $('[name="username"]').val(); 
data.password = $('[name="password"]').val(); 

if (localStorage['accounts'] == undefined) { // fixed 
// does the key exist? No so create something to get us started 
    localu = { accounts: [] }; 
} else { 
// the key exists! lets parse it 
    localu = JSON.parse(localStorage['accounts']); 
} 
// add the new "data" to the list 
localu.accounts.push(data); 
// save the results (we have to stringify it) 
localStorage['accounts'] = JSON.stringify(localu); 
+0

Merci, mais votre script a échoué ici! '' non défini '' car c'est juste 'undefined' :) Et merci pour la précision de ce qu'est un tableau et un objet. Je ne le savais pas. – Codel

Questions connexes