2016-06-20 9 views
1

Ich kann sitzen, so etwas zu tun:JavaScript, jQuery, local anhängen Elementen zu einem aray

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

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

sie später ich die vorhandenen Werte von data.items behalten wollen und eine neue Array anhängen wie:

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

so dass das Endergebnis aussehen würde:

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

dann kann ich es bekommen:

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

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

Ich habe so etwas wie dies versucht:

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

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

So Ihre Frage ist, wie anhängen? Kannst du das, was du bisher versucht hast, posten? – Kairat

+0

Erstens glaube ich nicht, dass Sie zwei identische Schlüssel ('items') im selben ison-Objekt haben wollen. – Kairat

Antwort

0

Sie nicht auf Objekte schieben kann, anstatt ein Array verwenden. Und der Index in einem Objekt muss eindeutig sein.

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")); 

Probieren Sie es hier: https://jsfiddle.net/snht4kvy/

0

allererst Sie wollen nicht zwei identische Schlüssel haben (items) in der gleichen json Objekt. Was Sie tun können, ist, fügen Sie Ihre item Objekte in das Array im JSON-Objekt

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

Dann können Sie neue items zum Array hinzufügen wie folgt:

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)); 
+0

Es ist fast die gleiche Antwort wie meine. –

Verwandte Themen