使用jQuery按值删除JSON数组中的元素

我的json数组的一部分

var videos = $j.parseJSON(' [ { "privacy":"public", "id":"1169341693" }, { "privacy":"private", "id":"803641223" }, { "privacy":"public", "id":"1300612600" }, ...... 

当我在console.log中获取我正在获取的元素

  [Object, Object, Object, …] 0: Object privacy: "public" id: "1169341693" 1: Object privacy: "private" id: "803641223" 2: Object privacy: "public" id: "1300612600" 

我还有一个我想要搜索的唯一ID

 var uniqueId = 803641223; 

我想在我的video数组中找到正确的id,并删除整个数组元素。 那么在这种情况下,我希望我的最终video数组只包含2个对象,而不是3个:

  var videos = $j.parseJSON(' [ { "privacy":"public", "id":"1169341693" }, { "privacy":"public", "id":"1300612600" }, ...... 

我的问题是如何进入arrays进行拼接。 我更喜欢用jQuery来做

有什么帮助吗?

你可以使用grep :

 videos = $.grep(videos, function(e) { return e.id!='803641223' }); 

在vanilla JavaScript中,您可以使用类似的过滤function,但IE8不支持它。

请注意, videos是一个JavaScript数组,它不是JSON数组,即使它是通过解析JSON字符串制作的。

一个非jQuery解决方案,可以修改数组:

 var uniqueId = 803641223; var videos = [ { "privacy":"public", "id":"1169341693" }, { "privacy":"private", "id":"803641223" }, { "privacy":"public", "id":"1300612600" } ]; function cleaner(arr, id) { for (var i = 0; i < videos.length; i++) { var cur = videos[i]; if (cur.id == uniqueId) { arr.splice(i, 1); break; } } } cleaner(videos, uniqueId); 

http://jsfiddle.net/4JAww/1/

请注意,这会修改原始数组,以便原始videos数组将包含您想要的项目,并且匹配uniqueId数组将会消失(永远)。 因此,这取决于您是否希望能够再次访问原始arrays,或者可以修改它。

它只是遍历数组的元素,将item的id属性与uniqueId值进行比较,如果匹配则将它们splice 。 我用break;splice之后立即因为你似乎暗示uniqueId可以/应该只在数组中出现一次,因为它是...唯一的。

你好你可以用javascript拼接function删除元素…

 videos.items.splice(1, 3); // Removes three items starting with the 2nd, 

它适合我。

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

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

希望能帮助到你。