JavaScript,jQuery,Localstorage将项追加到数组中

时间:2016-06-20 21:11:55

标签: jquery local-storage

是否可以做这样的事情:

var id = 1;
var data = {
    items: {
        id: id,
        html: '<p> Hello</p>',
    }
};

localStorage.setItem("demoitems", JSON.stringify(data));

他们稍后我想保留data.items的现有值并向其添加一个新数组,如:

var id = 2;
var data = {
    items: {
        id: id,
        html: '<p> Hello 2</p>',
    }
};

以便最终结果如下:

var data = {
    items: {
        id: 1,
        html: '<p> Hello 1</p>',
    },
    items: {
        id: 2,
        html: '<p> Hello 2</p>',
    }
};

然后我可以得到它:

var result = JSON.parse(localStorage.getItem("demoitems"));

$.each(result.items, function(k, v) {
... do loop here
});

我尝试过这样的事情:

    var newdata = {
        items: {
            id: 2,
            html: '<p> Hello 2</p>',
        }
    };

var olddata = JSON.parse(localStorage.getItem("demoitems"));
newdata.push(newdata, olddata);

2 个答案:

答案 0 :(得分:0)

您无法推送到对象,而是使用数组。 并且Object中的索引必须是唯一的。

var olddata = [
    {
        id: 2,
        html: '<p> Hello 2</p>'
    }
];

localStorage.setItem("demoitems", JSON.stringify(olddata))

var newdata = {
        id: 2,
        html: '<p> Hello 2</p>'
};

var data = JSON.parse(localStorage.getItem("demoitems"));
data.push(newdata);
localStorage.setItem("demoitems", JSON.stringify(data))

alert( localStorage.getItem("demoitems") );

在此处试试:https://jsfiddle.net/snht4kvy/

答案 1 :(得分:0)

首先,您不希望在同一个json对象中有两个相同的键(items)。你可以做的是,将你的item对象添加到json对象中的数组

var id = 1;
var data = {
    // array of items
    items: [{
        id: id,
        html: '<p> Hello</p>',
    }]
};
localStorage.setItem("demoitems", JSON.stringify(data));

然后你可以像这样添加新的items到数组:

var newitem = {
    id: 2,
    html: '<p> Hello 2</p>',
};

var olddata = JSON.parse(localStorage.getItem("demoitems"));
olddata["items"].push(newitem);
// store the data
localStorage.setItem("demoitems", JSON.stringify(olddata));