【问题标题】:How to delete the array with index 2 in local storage?如何删除本地存储中索引为 2 的数组?
【发布时间】: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 个问题。

  1. 如果我像上面那样使用 postid=1,它可以工作,并且它会创建一个具有正确值的新本地存储。但是,如果从我的表单中获取值,然后尝试将字符串转换为数字,它将停止工作。 这不起作用,就像它没有将字符串转换为数字一样?

    var postid = $$(this).attr('data-id'); postid=parseInt(postid)

    那为什么不把它转换成数字呢?

【问题讨论】:

    标签: arrays local-storage


    【解决方案1】:

    由于数组中的项目是 JSON 对象,因此您无法将该对象与 postid 进行比较。您应该使用 indexOf。您也不想拼接索引。这应该是这种情况下的对象或项目。如果要删除对象中的项目,则还必须遍历对象。所以这将是一个嵌套循环。

    //remove object
    for(var i = 0; i < info.data.length; i++){ 
    var data = info.data[i];
    if(i === postid){
             info.data.splice(data, 1);
        }
    }
    
    //remove item in object
    for(var i = 0; i < info.data.length; i++){
      if(i == postid){
        for(var j = 0; j < info.data[i].length; j++){
            var item = info.data[i][j];
            info.data[i].splice(item,1);
        }
      }
    }
    

    【讨论】:

    • 非常感谢肖恩。我不得不进行更改,因此它删除了数组,其中数组中的第一项与发布的相同。所以现在它可以删除一个数组。但我还有2个问题。我会更新我的问题,希望你能提供帮助:-)
    • Claes,$$(this) 中的“this”是什么?你在一个函数里面吗?你能告诉我更多细节吗?然后我可以尝试在控制台中测试一下。
    猜你喜欢
    • 1970-01-01
    • 2018-01-25
    • 2016-08-21
    • 2018-02-04
    • 2017-11-07
    • 2016-12-09
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多