如何从本地存储中删除所选对象

时间:2018-11-06 15:18:59

标签: javascript html local-storage

我正在寻找一种删除数组中的对象的方法,而不必删除所有本地存储,例如使用local.storage.clear

我尝试使用Local.storage.removeItem,但是没有用。我还使用JSON.stringify来设置项目,还有其他选择吗?谢谢!

<!DOCTYPE html>
<html>
<body>
    <p id="demo"></p>
    <input id="click"type="checkbox" onclick="savelocalstorage()">
    </button>

    <script>
        var n=0;

        function savelocalstorage()
        {
            var myarray = [
                { format: "jpg", name: "Alice" },
                { format: "jpg", name: "Jack" },
            ];

            if (n % 2 == 1) {
                document.getElementById("click").checked = false;
                localStorage.removeItem(myarray[0]);
            } else {
                document.getElementById("click").checked = true;
                localStorage["myarray"] = JSON.stringify(myarray[0]);
            }

            n++;
        }
    </script>
</body>
</html>

3 个答案:

答案 0 :(得分:2)

用于本地存储的密钥必须是字符串,您传递的对象不能是密钥

答案 1 :(得分:1)

您正在这样做:

localStorage.removeItem(myarray[0]);

但是myarray[0]是一个对象,而存储该对象的键是字符串"myarray"。在两种情况下都使用字符串。

答案 2 :(得分:0)

您需要通过删除第一个元素从本地存储中获取该项目并将其存储回去

var n = 0;

function savelocalstorage() {
  var myarray = [{
      format: "jpg",
      name: "Alice"
    },
    {
      format: "jpg",
      name: "Jack"
    }
  ];

  if (n % 2 == 1) {
    document.getElementById("click").checked = false;
    // get the storage & remove the first element
    let itm = JSON.parse(localStorage.getItem('myarray')).shift();
    localStorage.setItem('myarray', JSON.stringify(itm));

  } else {
    document.getElementById("click").checked = true;
    localStorage.setItem("myarray",JSON.stringify(myarray[0]));
  }
  n++;
}
<p id="demo"></p>
<input id="click" type="checkbox" onclick="savelocalstorage()">