Ich habe ein JavaScript-Objekt wie folgt:
var data = {items: [
{id: "1", name: "Snatch", type: "crime"},
{id: "2", name: "Witches of Eastwick", type: "comedy"},
{id: "3", name: "X-Men", type: "action"},
{id: "4", name: "Ordinary People", type: "drama"},
{id: "5", name: "Billy Elliot", type: "drama"},
{id: "6", name: "Toy Story", type: "children"}
]};
Wenn ich dieser Liste Elemente hinzufügen / entfernen möchte, wie würde ich mit jQuery vorgehen? Der Client möchte, dass diese Liste dynamisch geändert werden kann.
javascript
jquery
object-literal
Bug Magnet
quelle
quelle
{items: []}
würde folgendermaßen aussehen :{"items": []}
. Es ist nicht ganz dasselbe (nur sehr ähnlich; auch hier ist JSON eine Teilmenge dessen, was Sie verwenden, nämlich die Objektliteralnotation). Wenn Sie JSON deserialisieren , ist das Ergebnis ein Objektdiagramm (z. B. in JavaScript ist es ein JavaScript-Objekt).Antworten:
Zunächst einmal ist Ihr zitierter Code nicht JSON. Ihr Code ist die JavaScript-Objektliteralnotation. JSON ist eine Teilmenge von JSON , die zum einfacheren Parsen entwickelt wurde.
Ihr Code definiert ein Objekt (
data
) , das ein Array (items
) von Objekten (jeweils mit einemid
,name
undtype
).Sie brauchen oder wollen dafür kein jQuery, nur JavaScript.
Hinzufügen eines Elements:
Das trägt zum Ende bei. Siehe unten für das Hinzufügen in der Mitte.
Einen Gegenstand entfernen:
Es gibt verschiedene Möglichkeiten. Die
splice
Methode ist die vielseitigste:splice
Ändert das ursprüngliche Array und gibt ein Array der entfernten Elemente zurück.Hinzufügen in der Mitte:
splice
Tatsächlich werden sowohl hinzugefügt als auch entfernt. Die Signatur dersplice
Methode lautet:index
- der Index, ab dem Änderungen vorgenommen werden sollennum_to_remove
- Entfernen Sie beginnend mit diesem Index so viele EinträgeaddN
- ... und dann diese Elemente einfügenSo kann ich einen Artikel an der 3. Position wie folgt hinzufügen:
Das heißt: Ab Index 2 entfernen Sie null Elemente und fügen Sie dann das folgende Element ein. Das Ergebnis sieht folgendermaßen aus:
Sie können einige entfernen und einige sofort hinzufügen:
... was bedeutet: Ab Index 1 drei Einträge entfernen und diese beiden Einträge hinzufügen. Was in ... endet:
quelle
data.items
ist ein Array. Arrays haben einelength
Eigenschaft. :-)id = 5
und kann auch das Updatename
fürid=6
zuToy
Spleißen ist gut, jeder erklärt Spleißen, also habe ich es nicht erklärt. Sie können das Schlüsselwort delete auch in JavaScript verwenden. Es ist gut. Sie können $ .grep auch verwenden, um dies mit jQuery zu bearbeiten .
Der jQuery-Weg:
DELETE Way:
Zum Hinzufügen von PUSH ist der Spleiß besser, da der Spleiß eine schwergewichtige Funktion hat. Splice erstellt ein neues Array. Wenn Sie eine große Arraygröße haben, kann dies problematisch sein. Löschen ist manchmal nützlich. Wenn Sie nach dem Löschen nach der Länge des Arrays suchen, ändert sich dort keine Länge. Verwenden Sie es also mit Bedacht.
quelle
Wenn Sie jQuery verwenden, können Sie die Erweiterungsfunktion verwenden, um neue Elemente hinzuzufügen.
Dies erzeugt:
quelle
Das ist überhaupt nicht JSON, es sind nur Javascript-Objekte. JSON ist eine Textdarstellung von Daten, die eine Teilmenge der Javascript-Syntax verwendet.
Der Grund dafür, dass Sie keine Informationen zum Manipulieren von JSON mit jQuery finden können, ist, dass jQuery über nichts verfügt, was dies kann, und dass dies im Allgemeinen überhaupt nicht erfolgt. Sie bearbeiten die Daten in Form von Javascript-Objekten und wandeln sie dann in eine JSON-Zeichenfolge um, wenn Sie dies benötigen. (jQuery verfügt jedoch über Methoden für die Konvertierung.)
Was Sie haben, ist einfach ein Objekt, das ein Array enthält, sodass Sie das gesamte Wissen nutzen können, das Sie bereits haben. Verwenden Sie einfach,
data.items
um auf das Array zuzugreifen.So fügen Sie dem Array beispielsweise ein weiteres Element mit dynamischen Werten hinzu:
quelle
Hinzufügen eines Objekts in einem JSON-Array
Entfernen eines Objekts aus einem JSON
Es funktioniert für mich.
Es gibt ein Array ohne dieses Objekt zurück.
Ich hoffe es hilft.
quelle
Nun, es ist nur ein Javascript-Objekt, sodass Sie es
data.items
wie ein gewöhnliches Array bearbeiten können. Wenn Sie tun:Ihr
items
Array wird 1 Element kürzer sein.quelle
Halte die Dinge einfach :)
Hoffe das hilft!
quelle
Versuchen
Code-Snippet anzeigen
quelle