2016-12-06 1 views
0

新しい値をプッシュしようとすると、配列がnullであるというTypeErrorが発生します。ローカルストアの後に.pushを使用しようとすると配列がnullです

//first off.. 
var sillyArray= ["dummy"]; 
localStorage.setItem("sillyArray", JSON.stringify(sillyArray)); 

//I later used this 
sillyArray = JSON.parse(localStorage.getItem("sillyArray")); 
//the error is here 
sillyArray.push("yes"); 
localStorage.setItem("sillyArray", JSON.stringify(sillyArray)); 

これをプッシュまたは解析できませんか?

(編集投稿エラーは)

+0

あなたのコードは、あなたが思っている順に実行されていますか? (非同期のものがあるかもしれませんが) '.setItem()'を呼び出す前に '.getItem()' *を呼び出すと、 'null'が返されます。 – nnnnnn

+0

それは唯一の可能性ですか?私はlocalStorage.setItem( "sillyArray"、JSON.stringify(sillyArray))を持っています。 私がほとんど肯定的なif文を実行しているにもかかわらず、私はさらにそれを見ていきます。 – Sausejii

+0

それは絶対にありません。ありがたいことに、間違って何が間違っているか把握してください。乾杯! – Sausejii

答えて

2

yesArraydefindedはなかったです。そのため、.push()には不可能です。

+1

宣言されていない場合は 'null 'にすることはできませんが、' undefined'となります。しかし、 '.push()'を呼び出そうとすると参照エラーが発生します。 – nnnnnn

+0

私のポストで台無しに、 'yesArray'は私のコードでsillyArrayに置き換えられます。問題はまだ明らかです。 編集用の投稿を修正してください。 – Sausejii

0

はい、アイテムをundefinedにプッシュしようとしている可能性があります。そのため、TypeErrorが表示されます。ここで

あなたがそれを行うべきかです:

var array = ['dummy']; 
localStorage.setItem('someKey', JSON.stringify(array)); 
array = JSON.parse(localStorage.getItem('someKey')); 
array.push('foo'); 
localStorage.setItem('someKey', JSON.stringify(array)); 

あなたは

console.log(JSON.parse(localStorage.getItem('someKey'))) 

を行う場合は、ユーザーNNNNNNが言ったように、出力は私がHADN、あなたが["dummy", "foo"]

+0

OPのコードに何が間違っているかを説明することは、行ごとに比較するのではなく、変数名で変数名を残しておくのが良いでしょう。 – nnnnnn

+0

私の悪い、これはまだ問題ではない、私は配列の名前を変更したので、識別するのが簡単だった(Stupid right?)、この状況ではyesArray.pushは実際にはsillyArray.pushになる。 – Sausejii

+0

@Sausejii私は作品を投稿しました。試してみたい場合は、ブラウザのコンソールにコピー&ペーストしてください。 – mattias

0

を期待しているものになります正しく実行された私のlocalStorage.setItem("sillyArray", JSON.stringify(sillyArray));

私は座っていたn if文(は画像なし)が実行されていなかったため、nullが発生しました。

ありがとうございました!

関連する問題