将值添加到本地存储,而不是替换它

add a value to localstorage, instead of replacing it

本文关键字:替换 存储 添加      更新时间:2023-09-26

我希望将newUsername中的值添加到 setUsernamesArray localStorage,而在我的代码中,它替换了整个值。

法典

$('#signUpButton').click(function() {
  var newUsername = $('#usernameSignInBox').val();
  signedUpUsernames.push(newUsername);
  localStorage.setItem('setUsernamesArray', signedUpUsernames);
});

如果要添加到数组中,则必须意识到 localStorage 中的值不是数组,而是字符串。如果希望该字符串表示数组,并且要更新该数组,则必须执行以下操作:

  • 读取字符串,localStorage.getItem('setUsernamesArray')
  • 然后将其转换为带有 JSON.parse 的数组,
  • 然后推送到阵列,
  • 然后用localStorage.setItem('setUsernamesArray', JSON.stringify(array))再次存储

>localStorage总是将值存储为string,因此stringify array和存储,

localStorage.setItem('setUsernamesArray', JSON.stringify(signedUpUsernames));

在阅读它之前,只需parse它,

var arrayFrmStorage = JSON.parse(localStorage.getItem("setUsernamesArray"))

localStorage.setItem将替换localStorage中键的值。

将本地存储视为一个变量。

var a = "Hello";
a = " World"

替换a的值。为了避免这种情况,我们使用+=

var a = "Hello";
a += " World"

同样,您必须使用更新的值创建另一个对象并将其写入 localStorage。

下面是一个示例。

function setValueToLS(key, prop, value){
  var _local = {};
  if(localStorage.getItem(key))
    _local = JSON.parse(localStorage.getItem(key));
  _local[prop] = value;
  localStorage.setItem(key, JSON.stringify(_local));
}