推JSON对象到阵列中的localStorage(Push JSON Objects to arra

2019-08-31 12:01发布

我有一个JavaScript函数:

var a = [];
function SaveDataToLocalStorage(data)
{       
    var receiveddata = JSON.stringify(data);
    a.push(receiveddata);
    alert(a);

    localStorage.setItem('session', a);

}

数据参数是一个JSON对象。

但每次我点击它覆盖在我的localStorage数据的按钮。

有人知道怎么做这个吗?

Answer 1:

有你需要采取妥善存放您的localStorage此信息仅几步之遥。 之前,我们坐下来代码但是,请注意,localStorage的(在当前时间) 不能包含任何数据类型,除了字符串。 您需要序列化存储阵列,然后分析它退了出去进行修改它。

步骤1:

如果你是不是已经存储您的localStorage的序列化阵列下面片段中的第一个代码只应运行session变量。
为了确保您的localStorage是正确安装和存储阵列,首先运行下面的代码片段:

var a = [];
a.push(JSON.parse(localStorage.getItem('session')));
localStorage.setItem('session', JSON.stringify(a));

上面的代码应该只运行一次且仅当您尚未存储在localStorage的数组 session变量。 如果你已经这样做了跳到第2步。

第2步:

修改你的功能,如下所示:

function SaveDataToLocalStorage(data)
{
    var a = [];
    // Parse the serialized data back into an aray of objects
    a = JSON.parse(localStorage.getItem('session'));
    // Push the new data (whether it be an object or anything else) onto the array
    a.push(data);
    // Alert the array value
    alert(a);  // Should be something like [Object array]
    // Re-serialize the array back into a string and store it in localStorage
    localStorage.setItem('session', JSON.stringify(a));
}

这应该照顾其余的为您服务。 当你解析出来,它将成为对象的数组。

希望这可以帮助。



Answer 2:

截至目前,你可以在localStorage的只能存储字符串值 。 你需要序列化数组对象,然后将其保存在localStorage的。

例如:

localStorage.setItem('session', a.join('|'));

要么

localStorage.setItem('session', JSON.stringify(a));


Answer 3:

把一整个阵列成一个localStorage的条目是非常低效的:整个事情需要被重新编码,每次添加一些东西到阵列或更改一个条目的时间。

一个替代方案是使用http://rhaboo.org存储任何JS对象,然而深度嵌套,使用对每个终端值的单独的localStorage条目。 阵列被恢复更忠实地,包括非数字属性和各种类型的稀疏,对象原型/构造被恢复在标准情况下,且API可笑简单:

var store = Rhaboo.persistent('Some name');
store.write('count', store.count ? store.count+1 : 1);

store.write('somethingfancy', {
  one: ['man', 'went'],
  2: 'mow',
  went: [  2, { mow: ['a', 'meadow' ] }, {}  ]
});  
store.somethingfancy.went[1].mow.write(1, 'lawn');

顺便说一句,我写的。



Answer 4:

有一件事我可以建议你是扩展存储对象来处理对象和数组。

localStorage的只能处理字符串,这样就可以达到使用这些方法

Storage.prototype.setObj = function(key, obj) {
    return this.setItem(key, JSON.stringify(obj))
}
Storage.prototype.getObj = function(key) {
    return JSON.parse(this.getItem(key))
}

使用它的每一个值将被转换为上一套JSON字符串和解析的GET



Answer 5:

var arr = [ 'a', 'b', 'c'];
arr.push('d'); // insert as last item


文章来源: Push JSON Objects to array in localStorage