我的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;
我想在我的视频数组中找到正确的id,并删除整个数组元素。所以在这种情况下,我希望我的最终视频数组只包含2个对象,而不是3:
var videos = $j.parseJSON('
[
{ "privacy":"public",
"id":"1169341693" },
{ "privacy":"public",
"id":"1300612600" }, ......
我的问题是如何进入阵列进行拼接。我更喜欢用jQuery
来做请帮忙吗?
答案 0 :(得分:14)
您可以使用grep:
videos = $.grep(videos, function(e) { return e.id!='803641223' });
在vanilla JavaScript中,您可以使用类似的filter函数,但IE8不支持它。
请注意videos
是一个JavaScript数组,它不是JSON数组,即使它是通过解析JSON字符串而生成的。
答案 1 :(得分:4)
一种非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
的数组将会消失(永远)。因此,这取决于您是否希望能够再次访问原始阵列,或者可以修改它。
它只是循环遍历数组的元素,将项目的id
属性与uniqueId
值进行比较,如果匹配则将splice
s进行比较。我在break;
之后立即使用splice
,因为您似乎暗示uniqueId
可以/应该只在数组中出现一次,因为它是......唯一的。
答案 2 :(得分:3)
您好,您可以使用javascript拼接功能删除元素...
videos.items.splice(1, 3); // Removes three items starting with the 2nd,
答案 3 :(得分:0)
对我来说是工人。
arrList = $.grep(arrList, function (e) {
if(e.add_task == addTask && e.worker_id == worker_id) {
return false;
} else {
return true;
}
});
它返回一个没有该对象的数组。
希望它有所帮助。