6

我的 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 来做

请问有什么帮助吗?

4

4 回答 4

14

您可以使用grep

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

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

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

于 2013-03-12T17:14:37.827 回答
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);

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

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

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

于 2013-03-12T17:21:49.890 回答
3

您好,您可以使用 javascript splice 功能删除元素...

videos.items.splice(1, 3); // Removes three items starting with the 2nd,
于 2014-06-11T13:20:19.723 回答
0

它为我工作。

  arrList = $.grep(arrList, function (e) { 

        if(e.add_task == addTask && e.worker_id == worker_id) {
            return false;
        } else {
            return true;
        }
    });

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

希望能帮助到你。

于 2017-02-02T17:18:14.397 回答