Добавление/удаление элементов из объекта 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 80

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

она возвращает массив без этого объекта.

надеюсь, что это помогает.