Добавление/удаление элементов из объекта JavaScript с jQuery
У меня есть объект 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"}
]};
Если бы я хотел добавить / удалить элементы в этот список, как бы я это сделал с помощью jQuery? Клиент хочет, чтобы этот список был динамически модифицируемым.
6 ответов:
во-первых, ваш цитируемый код не JSON. Ваш код-это буквенная нотация объекта JavaScript. JSON это подмножество, предназначенное для более легкого разбора.
ваш код определяет объект (
data
), содержащий массив (items
) объектов (каждый сid
,name
иtype
).вам не нужен или не нужен jQuery для этого, просто JavaScript.
добавить пункт:
data.items.push( {id: "7", name: "Douglas Adams", type: "comedy"} );
это добавляет к концу. См. ниже для добавления в середине.
удаление элемента:
есть несколько способов. Элемент
splice
метод является наиболее универсальным:data.items.splice(1, 3); // Removes three items starting with the 2nd, // ("Witches of Eastwick", "X-Men", "Ordinary People")
splice
изменяет исходный массив и возвращает массив удаленных элементов.добавление в середину:
splice
на самом деле, как добавление и удаление. Подписьsplice
метод:removed_items = arrayObject.splice(index, num_to_remove[, add1[, add2[, ...]]]);
index
- индекс, с которого следует начать вносить измененияnum_to_remove
- начиная с этого индекса, удалите это множество записейaddN
- ...а затем вставить эти элементытак что я могу добавить элемент в 3-ю позицию так:
data.items.splice(2, 0, {id: "7", name: "Douglas Adams", type: "comedy"} );
что это говорит: начиная с индекса 2, Удалите нулевые элементы, а затем вставьте следующий элемент. Результат выглядит так:
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"} ]};
вы можете удалить и добавить некоторые сразу:
data.items.splice(1, 3, {id: "7", name: "Douglas Adams", type: "comedy"}, {id: "8", name: "Dick Francis", type: "mystery"} );
...что означает: начиная с индекса 1, Удалите три записи, а затем добавьте эти две записи. Что приводит к:
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"} ]};
соединение хорошо, все объясняют сращивание, поэтому я этого не объяснил. Вы также можете использовать удалить ключевое слово в JavaScript, это хорошо. Вы можете использовать $.грэп также манипулировать этим с помощью jQuery.
путь jQuery:
data.items = jQuery.grep( data.items, function (item,index) { return item.id != "1"; });
удалить так:
delete data.items[0]
для добавления нажима лучше соединение, потому что соединение тяжелая утяжеленная функция. Соединения создать новый массив , если у вас огромной размер массива, то это может быть хлопотный. удалить иногда полезно, после удаления, если вы ищете длину массива, то там нет никаких изменений в длине. Так что используйте его с умом.
Если вы не используете jQuery, вы можете использовать функцию расширения для добавления новых элементов.
var olddata = {"fruit":{"apples":10,"pears":21}}; var newdata = {}; newdata['vegetables'] = {"carrots": 2, "potatoes" : 5}; $.extend(true, olddata, newdata);
это создаст:
{"fruit":{"apples":10,"pears":21}, "vegetables":{"carrots":2,"potatoes":5}};
Это вообще не JSON, это просто объекты Javascript. JSON - это текстовое представление данных, которое использует подмножество синтаксиса Javascript.
причина, по которой вы не можете найти никакой информации о манипулировании JSON с помощью jQuery, заключается в том, что jQuery не имеет ничего, что может это сделать, и это вообще не делается. Вы манипулируете данными в виде объектов Javascript, а затем превращаете их в строку JSON, если это то, что вам нужно. (jQuery имеет методы для преобразования, однако.)
data.items доступ к массиву.например, чтобы добавить другой элемент в массив с помощью динамических значений:
// 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);
Ну, это просто объект JavaScript, так что вы можете манипулировать
data.items
так же, как и обычный массив. Если вы это сделаете:data.items.pop();
код
items
массив будет на 1 элемент короче.
добавление объекта в массив json
var arrList = []; var arr = {}; arr['worker_id'] = worker_id; arr['worker_nm'] = worker_nm; arrList.push(arr);
удаление объекта из json
это рабочий для меня.
arrList = $.grep(arrList, function (e) { if(e.worker_id == worker_id) { return false; } else { return true; } });
она возвращает массив без этого объекта.
надеюсь, что это помогает.