【发布时间】:2016-12-12 23:03:29
【问题描述】:
我的本地存储是这样的
{"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));
所以我猜 if 部分是错误的!? 任何意见表示赞赏,谢谢。
更新 因此,我可以删除数组中的一个帖子,其中数组中的第一项等于我的 postid,因此如果 postid=1,它将删除数组中的第二个帖子。
//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)
那为什么不把它转换成数字呢?
【问题讨论】:
标签: arrays local-storage