Adicionando / removendo itens de um object JavaScript com jQuery

Eu tenho um object JavaScript da seguinte forma:

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"} ]}; 

Se eu quisesse adicionar / remover itens para esta lista, como eu usaria o jQuery? O cliente quer que essa lista seja dinamicamente modificável.

    Primeiramente, o seu código citado não é JSON. Seu código é uma notação literal de object JavaScript. JSON é um subconjunto do projetado para facilitar a análise.

    Seu código define um object ( data ) contendo uma matriz ( items ) de objects (cada um com um id , name e type ).

    Você não precisa ou quer jQuery para isso, apenas JavaScript.

    Adicionando um item:

     data.items.push( {id: "7", name: "Douglas Adams", type: "comedy"} ); 

    Isso aumenta o final. Veja abaixo para adicionar no meio.

    Removendo um item:

    Existem várias maneiras. O método de splice é o mais versátil:

     data.items.splice(1, 3); // Removes three items starting with the 2nd, // ("Witches of Eastwick", "X-Men", "Ordinary People") 

    splice mescla a matriz original e retorna uma matriz dos itens removidos.

    Adicionando no meio:

    splice faz na verdade adicionar e remover. A assinatura do método de splice é:

     removed_items = arrayObject.splice(index, num_to_remove[, add1[, add2[, ...]]]); 
    • index – o índice no qual começar a fazer alterações
    • num_to_remove – começando com esse índice, remova essas muitas inputs
    • addN – … e depois inserir esses elementos

    Então eu posso adicionar um item na 3ª posição assim:

     data.items.splice(2, 0, {id: "7", name: "Douglas Adams", type: "comedy"} ); 

    O que isso diz é: A partir do índice 2, remova itens zero e, em seguida, insira o seguinte item. O resultado é assim:

     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"} ]}; 

    Você pode remover alguns e adicionar alguns de uma só vez:

     data.items.splice(1, 3, {id: "7", name: "Douglas Adams", type: "comedy"}, {id: "8", name: "Dick Francis", type: "mystery"} ); 

    ... o que significa: a partir do índice 1, remova três inputs e adicione essas duas inputs. O que resulta em:

     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"} ]}; 

    Splice é bom, todo mundo explica splice, então eu não expliquei isso. Você também pode usar a palavra-chave delete em JavaScript, é bom. Você pode usar $ .grep também para manipular isso usando jQuery.

    A maneira do jQuery:

     data.items = jQuery.grep( data.items, function (item,index) { return item.id != "1"; }); 

    DELETE Way:

     delete data.items[0] 

    Para adicionar PUSH é melhor a emenda, porque a emenda é uma function pesada. Splice criar uma nova matriz, se você tem um tamanho enorme de matriz, então pode ser problemático. delete é útil algumas vezes, depois de excluir se você procurar o comprimento da matriz, então não há nenhuma alteração no comprimento lá. Então use sabiamente.

    Se você estiver usando o jQuery, poderá usar a function extend para adicionar novos itens.

     var olddata = {"fruit":{"apples":10,"pears":21}}; var newdata = {}; newdata['vegetables'] = {"carrots": 2, "potatoes" : 5}; $.extend(true, olddata, newdata); 

    Isso irá gerar:

     {"fruit":{"apples":10,"pears":21}, "vegetables":{"carrots":2,"potatoes":5}}; 

    Isso não é JSON, são apenas objects Javascript. JSON é uma representação de texto de dados, que usa um subconjunto da syntax JavaScript.

    O motivo pelo qual você não consegue encontrar nenhuma informação sobre a manipulação do JSON usando jQuery é porque o jQuery não tem nada que possa fazer isso, e geralmente não é feito. Você manipula os dados na forma de objects Javascript e os transforma em uma string JSON, se necessário. (jQuery tem methods para a conversão, no entanto.)

    O que você tem é simplesmente um object que contém uma matriz, para que você possa usar todo o conhecimento que já possui. Apenas use data.items para acessar o array.

    Por exemplo, para adicionar outro item ao array usando valores dynamics:

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

    Bem, é apenas um object javascript, então você pode manipular data.items como se fosse um array comum. Se você fizer:

     data.items.pop(); 

    sua matriz de items será um item menor.

    Adicionando um object em um array json

     var arrList = []; var arr = {}; arr['worker_id'] = worker_id; arr['worker_nm'] = worker_nm; arrList.push(arr); 

    Removendo um object de um json

    É trabalhador para mim.

      arrList = $.grep(arrList, function (e) { if(e.worker_id == worker_id) { return false; } else { return true; } }); 

    Ele retorna um array sem esse object.

    Espero que ajude.