使用JQuery添加/删除JSON数据中的项目

我有一个JSON对象,如下所示:

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? 我知道如果我们简单地使用一个数组,我可以很容易地做到这一点,但以前的程序员已经使用JSON构build了代码,现在客户端在最后一刻改变了主意,希望这个列表可以dynamic修改。 我想节省时间从重写所有的代码使用数组而不是JSON,所以想知道是否有人知道一种方法来实现这一点,因为我似乎无法find关于如何操纵JSON与JQuery的任何地方在网上。

非常感谢!

首先,你的引用代码不是 JSON。 你的代码是JavaScript对象文字符号。 JSON是为简化parsing而devise的子集。

你的代码定义了一个包含对象的数组(对象)(每个对象都有一个idnametype )的对象( data )。

你不需要或想要这个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 – …然后插入这些元素

所以我可以像这样在第三个位置添加一个项目:

 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中使用delete关键字,这很好。 你也可以使用$ .grep来操纵这个使用jQuery。

jQuery的方式:

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

删除方式:

 delete data.items[0] 

对于添加PUSH来说,拼接更好,因为拼接是重加权函数。 拼接创build一个新的数组,如果你有一个巨大的数组大小,那么它可能是麻烦的。 删除是有用的,删除后,如果你看数组的长度,那么在那里没有长度的变化。 所以明智地使用它。

这根本不是JSON,它只是Javascript对象。 JSON是数据的文本表示,它使用Javascript语法的子集。

你无法find关于使用jQuery来操纵JSON的任何信息的原因是因为jQuery没有任何东西可以做到这一点,而且一般都没有做到。 你以Javascript对象的forms操作数据,然后把它变成一个JSONstring,如果这是你所需要的。 (虽然jQuery确实有转换的方法)。

你所拥有的只是一个包含数组的对象,所以你可以使用你已有的所有知识。 只需使用data.items来访问数组。

例如,要使用dynamic值将其他项添加到数组中:

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

如果您使用jQuery,则可以使用扩展function添加新项目。

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

那么,这只是一个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; } }); 

它返回一个没有该对象的数组。

希望它有帮助。