2016-06-28 22 views
0

現在、配列をsessionStorageに格納してから、sessionStorageからデータを取得しようとしています。次に、sessionStorageデータを配列に戻して格納します。配列に配列を格納し、配列内のすべての値を出力する

var testArray = ["Shirt", "Bottom", "Shoes"]; 
window.sessionStorage.setItem("items", JSON.stringify(testArray)); 
var storedArray = JSON.parse('[' + sessionStorage.getItem("items") + ']'); 
var i; 
for (i = 0; i < storedArray.length; i++) { 
    alert(storedArray[i]); 
} 

ここで何か間違っていますか?

+1

'JSON.parse(sessionStorage.getItem(" items "));'何を '[\]'に連結させましたか? – Rayon

答えて

1

すでに配列として格納されているため、角括弧は必要ありません。あなたがやっているのは元の配列を新しい配列に入れていることです。

はこれを試してみてください。

var testArray = ["Shirt", "Bottom", "Shoes"]; 
window.sessionStorage.setItem("items", JSON.stringify(testArray)); 
var storedArray = JSON.parse(sessionStorage.getItem("items"));//no brackets 
var i; 
for (i = 0; i < storedArray.length; i++) { 
      alert(storedArray[i]); 
} 

https://jsfiddle.net/517x5rcg/

0

あなたは[]で配列をラップする必要はありません。 sessionStorage.getItem("items")はJSON文字列配列を返します。配列を別の配列でラップしています。あなたの問題は、配列を文字列に変換するalert関数です(Array.prototype.joinメソッドを呼び出して結合された配列要素のように)。alertには文字列しか表示できないためです。おそらく、配列がないと思うでしょう。デバッグにはconsole.logを使用してください。