Man ir šāds JavaScript objekts:
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"}
]};
Ja es gribētu pievienot/noņemt vienumus no šī saraksta, kā es to darītu, izmantojot jQuery? Klients vēlas, lai šis saraksts būtu dinamiski modificējams.
Pirmkārt, jūsu citētais kods nav JSON. Jūsu kods ir JavaScript objekta burtiskais apzīmējums. JSON ir tās apakškopa, kas paredzēta vieglākai analizēšanai.
Jūsu kods definē objektu (data
), kas satur objektu masīvu (items
) (katram ir id
, vārds
un tips
).
Šim nolūkam nav nepieciešams vai nepieciešams jQuery, tikai JavaScript.
Elementa pievienošana:
data.items.push(
{id: "7", name: "Douglas Adams", type: "comedy"}
);
Tas pievieno beigās. Par pievienošanu vidū skat. tālāk.
Izņemot elementu:
Ir vairāki veidi. Visdaudzpusīgākā ir `splice
metode:
data.items.splice(1, 3); // Removes three items starting with the 2nd,
// ("Witches of Eastwick", "X-Men", "Ordinary People")
splice
izmaina sākotnējo masīvu un atgriež noņemtā elementu masīvu.
Pievienošana pa vidu:
splice
faktiski veic gan pievienošanu, gan noņemšanu. Metodes splice
paraksts ir šāds:
removed_items = arrayObject.splice(index, num_to_remove[, add1[, add2[, ...]]]);
index
- indekss, no kura jāsāk veikt izmaiņasnum_to_remove
- sākot ar šo indeksu, noņemt tik daudz ierakstuaddN
- ...un pēc tam ievieto šos elementusTātad es varu pievienot elementu 3. pozīcijā šādi:
data.items.splice(2, 0,
{id: "7", name: "Douglas Adams", type: "comedy"}
);
Tas nozīmē, ka: Sākot no indeksa 2, noņemiet nulles vienumus un pēc tam ievietojiet šo elementu. Rezultāts izskatās šādi:
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"}
]};
Dažus var noņemt un dažus pievienot uzreiz:
data.items.splice(1, 3,
{id: "7", name: "Douglas Adams", type: "comedy"},
{id: "8", name: "Dick Francis", type: "mystery"}
);
...kas nozīmē: Sākot no indeksa 1, noņemiet trīs ierakstus, pēc tam pievienojiet šos divus ierakstus. Rezultāts ir:
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"}
]};
Tas nemaz nav JSON, tie ir tikai Javascript objekti. JSON ir teksta datu attēlojums, kas izmanto Javascript sintakses apakškopu.
Iemesls, kādēļ jūs nevarat atrast informāciju par JSON manipulēšanu, izmantojot jQuery, ir tāds, ka jQuery nav nekā, kas to varētu darīt, un parasti tas vispār netiek darīts. Jūs manipulējat ar datiem Javascript objektu formā un pēc tam pārvēršat tos JSON virknē, ja tas ir tas, kas jums nepieciešams. (Tomēr jQuery ir metodes pārvēršanai.)
Tas, kas jums ir, ir vienkārši objekts, kas satur masīvu, tāpēc jūs varat izmantot visas zināšanas, kas jums jau ir. Vienkārši izmantojiet data.items
, lai piekļūtu masīvam.
Piemēram, lai masīvam pievienotu vēl vienu elementu, izmantojot dinamiskās vērtības:
// 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);