使用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);
请注意,这会修改原始数组,以便原始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; } });
它返回一个没有该对象的数组。
希望能帮助到你。