如何向localStorage上的数组push数据

我想做的一个功能是向localstorage上设置一个空数组,每次点击就push当前点击的数据到localstorage的数组中,但是localstorage不允许push,我试过深拷贝localstorage的数组出来再push到深拷贝的数组中,在设置localstorage的数组为深拷贝的数组,但是也没尝试出来,请大神支招

阅读 12.6k
5 个回答

localStorage只能存储String,要用Json对象转化下:

var arrayObject = [];
arrayObject.push('a','b','c');
localStorage.setItem("array",JSON.stringify(arrayObject));
var arrayObjectLocal = JSON.parse(localStorage.getItem("array"));
arrayObjectLocal.push('d','e','f');
for (i = 0; i < arrayObjectLocal.length; i++) { 
    console.log(arrayObjectLocal[i]);
}

很简单,存进去之前先json字符串化,取出来逆回来操作,就能得到正常的数组。

localStorage.setItem("arr", JSON.stringify(arr))
var arr = JSON.parse(localStorage.getItem("arr"))
arr.push(something)
localStorage.setItem("arr", JSON.stringify(arr))

很奇怪的思维,为啥不往数组里push,在localStorage.setItem("arr",arr)呢,而是在先设置localStorage,在进行操作呢

数组存localstorage里会变成字符串,
想操作localStorage的变量就先取出来进行操作再存进去。

//设置
arr = [1];
localStorage.arr = arr

取出来再设置

//取出
getarr = localStorage.arr.split(',')
//操作
getarr.push(2)//["1", 2]
//再存
localStorage.arr = getarr//这时候localStorage.arr变为 "1,2"

亲,首先你要搞清楚localstorage到底是个什么东西,
localstorage作为HTML5新特性中的webStorage技术中的永久存储方法,我们通常也叫他本地存储和跨会话级存储。
他的用法并不需要给localstorage设置空数组,他本身有自己的存取数据的方法,如下:

localstorage["key"] = 'value' ;

希望可以帮到你啦~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题