私のローカルストレージは、私は配列に一つだけのアイテムを削除することができますどのようにこのローカルストレージのインデックス2の配列を削除するには?
{"data":[[0,"Post1","Text1","2016-12-16T11:01:00.000Z"],[1,"Post2","Text2","2016-12-20T14:00:00.000Z"]],[3,"Post3","Text3","2016-12-25T13:00:00.000Z"]]}
のように見えますか?
私はpostidが削除したい配列インデックスであるので、これを試しました。
var postid = 1
var info = JSON.parse(localStorage.getItem("rp_data"));
var obj = [];
for(var i = 0; i < info.data.length; i++){
var data = info.data[i];
if(data === postid){
info.splice(i, 1);
}
}
localStorage.setItem("rp_data", JSON.stringify(data));
だから私は間違っていると思います! すべての入力がありがとう、ありがとう。
UPDATE これで、配列の最初の項目が自分のpostidと等しい配列の投稿の1つを削除できます。したがって、postid = 1の場合、配列の2番目の投稿が削除されます。
//var postid = $$(this).attr('data-id');
//postid=parseInt(postid)
postid=1
var info = JSON.parse(localStorage.getItem("rp_data"));
//remove object
for(var i = 0; i < info.data.length; i++){
var data = info.data[i][1];
myApp.alert(data);
if(i === postid){
myApp.alert(i);
info.data.splice(i, 1);
}
}
localStorage.removeItem("rp_data");
localStorage.setItem("rp_data", JSON.stringify(info));
もう1つ問題があります。
上記のようにpostid = 1を使用すると、正しい値で新しいローカルストレージが作成されます。しかし、私のフォームから値を取得し、文字列を数値に変換しようとすると、動作を停止します。 文字列を数値に変換していないなど、これは機能しません。
var postid = $$(this).attr( 'data-id'); postid = parseInt(postid)
なぜ、これを数値に変換しないのですか?
ありがとうSean。私は変更しなければならなかったので、配列の最初の項目は投稿と同じでした。これで配列を削除します。しかし、2つの問題が残っています。私は私の質問を更新します、あなたが助けることができることを願って:-) –
Claes、これは$$(これ)の中で何ですか?あなたは機能の中にいますか?もう少し詳しく教えてもらえますか?それから私はコンソールで試してみることができます。 –