更新Javascript数组并再次进行字符串化

时间:2014-12-11 14:42:47

标签: javascript arrays local-storage

Sooo我有这个数组

var items = ["shovel", "sword", "rope", "gun"];

我将其字符串化并放在localStorage

localStorage.setItem("items", JSON.stringify(items));

然后我调用此函数用空字符串替换传递的变量的索引值。这样我就可以检查特定数组索引的值是否可用。该值将被删除,但其索引仍需要稍后检查。

function removeItem(itm) {
    var itemArray = JSON.parse(localStorage.getItem("items"));   //old array
    var index = itemArray.indexOf(itm);
    if (index > -1) {
        itemArray[index]="";  //edited new array
        localStorage.setItem("items", JSON.stringify(itemArray)); //does not store
    }
}

但是,新编辑的数组不会返回localStorage

2 个答案:

答案 0 :(得分:0)

对我来说完全没问题:http://jsfiddle.net/tto685z4/

var items = ["shovel", "sword", "rope", "gun"];

localStorage.setItem("items", JSON.stringify(items));

function removeItem(itm) {
    var itemArray = JSON.parse(localStorage.getItem("items"));   //old array
    var index = itemArray.indexOf(itm);
    if (index > -1) {
        itemArray[index]="";  //edited new array
        localStorage.setItem("items", JSON.stringify(itemArray)); //does not store
    }
}

removeItem('rope');

alert(localStorage.getItem('items'));

返回["shovel", "sword", "", "gun"]

您一定是在尝试删除不存在的项目。

答案 1 :(得分:0)

如果你想删除元素,只需进行一些更改:

itemArray[index]="";

更改为:

itemArray = itemArray.splice(index, 1) and you will not see this element again