Mám nasledujúci objekt JavaScript:
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"}
]};
Ak by som chcel do tohto zoznamu pridávať/odstraňovať položky, ako by som to urobil pomocou jQuery? Klient chce, aby sa tento zoznam dal dynamicky upravovať.
Po prvé, váš citovaný kód nie je JSON. Váš kód je objektový literálny zápis v jazyku JavaScript. JSON je jeho podmnožinou určenou na jednoduchšie analyzovanie.
Váš kód definuje objekt (data
) obsahujúci pole (items
) objektov (každý s id
, name
a type
).
Na to nepotrebujete ani nechcete jQuery, stačí JavaScript.
Pridanie položky:
data.items.push(
{id: "7", name: "Douglas Adams", type: "comedy"}
);
To sa pridá na koniec. Pre pridanie do stredu pozri nižšie.
Odstránenie položky:
Existuje niekoľko spôsobov. Spôsob splice
je najuniverzálnejší:
data.items.splice(1, 3); // Removes three items starting with the 2nd,
// ("Witches of Eastwick", "X-Men", "Ordinary People")
splice
upraví pôvodné pole a vráti pole odstránených položiek.
Pridanie v strede:
splice
v skutočnosti vykonáva pridávanie aj odstraňovanie. Signatúra metódy splice
je:
removed_items = arrayObject.splice(index, num_to_remove[, add1[, add2[, ...]]]);
index
- index, od ktorého sa majú začať vykonávať zmenynum_to_remove
- počnúc týmto indexom odstráňte tento počet záznamovaddN
- ...a potom vložte tieto prvkyTakže môžem pridať prvok na 3. pozíciu takto:
data.items.splice(2, 0,
{id: "7", name: "Douglas Adams", type: "comedy"}
);
To znamená, že: Počnúc indexom 2 odstráňte nulové položky a potom vložte túto nasledujúcu položku. Výsledok vyzerá takto:
var data = {items: [
{id: "1", name: "Snatch", type: "crime"},
{id: "2", name: "Witches of Eastwick", type: "comedy"},
{id: "7", name: "Douglas Adams", type: "comedy"}, // <== The new item
{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"}
]};
Niektoré môžete odstrániť a niektoré pridať naraz:
data.items.splice(1, 3,
{id: "7", name: "Douglas Adams", type: "comedy"},
{id: "8", name: "Dick Francis", type: "mystery"}
);
...čo znamená: Začnite od indexu 1, odstráňte tri záznamy a potom pridajte tieto dva záznamy. Výsledkom je:
var data = {items: [
{id: "1", name: "Snatch", type: "crime"},
{id: "7", name: "Douglas Adams", type: "comedy"},
{id: "8", name: "Dick Francis", type: "mystery"},
{id: "4", name: "Ordinary People", type: "drama"},
{id: "5", name: "Billy Elliot", type: "drama"},
{id: "6", name: "Toy Story", type: "children"}
]};
To vôbec nie je JSON, sú to len objekty Javascriptu. JSON je textová reprezentácia údajov, ktorá používa podmnožinu syntaxe jazyka Javascript.
Dôvod, prečo nemôžete nájsť žiadne informácie o manipulácii s JSON pomocou jQuery, je ten, že jQuery nemá nič, čo by to dokázalo, a vo všeobecnosti sa to vôbec nerobí. Manipulujete s údajmi vo forme objektov Javascriptu a potom ich premeníte na reťazec JSON, ak to potrebujete. (JQuery však má metódy na konverziu.)
To, čo máte, je jednoducho objekt, ktorý obsahuje pole, takže môžete využiť všetky znalosti, ktoré už máte. Na prístup k poľu stačí použiť data.items
.
Napríklad na pridanie ďalšej položky do poľa pomocou dynamických hodnôt:
// The values to put in the item
var id = 7;
var name = "The usual suspects";
var type = "crime";
// Create the item using the values
var item = { id: id, name: name, type: type };
// Add the item to the array
data.items.push(item);