将JSON对象推送到localStorage中的数组

jpfvwuh4  于 2022-12-24  发布在  其他
关注(0)|答案(5)|浏览(146)

我在Javascript中有一个函数:

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

    localStorage.setItem('session', a);

}

数据参数是JSON对象。
但是每次我点击这个按钮,它都会覆盖我本地存储中的数据。
有人知道怎么做吗?

ql3eal8s

ql3eal8s1#

您需要采取一些步骤来正确地将这些信息存储在localStorage中。但是,在我们开始讨论代码之前,请注意localStorage(目前)不能保存除字符串之外的任何数据类型。您需要序列化数组以进行存储,然后解析它以对其进行修改。
第一步:

    • 仅当尚未在localStorage session变量中存储序列化数组时,才应运行下面的第一个代码片段。**

要确保localStorage设置正确并存储数组,请首先运行以下代码段:

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

以上代码只应运行一次,并且仅当您尚未在localStorage session变量中存储数组时才可运行。如果您已在执行此操作,请跳至步骤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));
}

剩下的就交给你了,当你解析它的时候,它会变成一个对象数组。

yi0zb3m4

yi0zb3m42#

到目前为止,你 * 只能在localStorage中存储字符串值 *,你需要序列化数组对象,然后把它存储在localStorage中。
例如:

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

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

sauutmhj3#

我可以建议您的一件事是扩展存储对象以处理对象和数组。
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))
}

使用它,every值将在set时转换为json字符串,并在get时解析

nimxete2

nimxete24#

let items = {
            name: name,
            size: size,
            price: price
        }

        let itemsList = []

        const getCarStorage = localStorage.getItem('productsList')
        if(getCarStorage){
            itemsList = JSON.parse(localStorage.getItem('productsList'))
            itemsList.push(items)
            localStorage.setItem('productsList', JSON.stringify(itemsList))
        }else{
            itemsList.push(items)
            localStorage.setItem('productsList', JSON.stringify(itemsList))
        }

我有一个对象,它包含了许多项,可以通过参数来实现。一个变量项列表,它是一个数组。
如果在本地存储中没有任何内容,则必须将对象推到阵列中并设置在本地存储中。
如果你想在本地存储中创建数组,我就在itemsList中保护它,然后把我的对象推到项目中,然后设置它。
同样,如果你没有在本地存储,创造,如果你有推动新的.

r6hnlfcb

r6hnlfcb5#

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

相关问题