jquery javascript从JSON对象中删除对象数据

时间:2012-02-08 03:09:59

标签: javascript jquery json object

我的JSON对象看起来像下面的对象,这个对象可以持续数天。所以我想知道无论如何我可以删除全套,相当于下面例子中的位置[0]或位置[1]。我必须首先遍历Object并尝试找出哪个是哪个。所以我想说我要删除一个邮政编码为06238的集合,我需要遍历整个位置对象并找出它在对象中的哪个集合,然后相应地删除它。问题是我不确定如何处理这个概念。

{
"locations": [
            {
                "city": "San Jose",
                "state": "CA",
                "zipcode": "95125",
                "longitude": "0",
                "latitude": "0"
            },
            {
                "city": "Coventry",
                "state": "CT",
                "zipcode": "06238",
                "longitude": "0",
                "latitude": "0"
            }
        ]
    }

3 个答案:

答案 0 :(得分:19)

只需传递索引

即可
delete locations[0];

你经历了像这样的正常JSON迭代

jQuery.each(locations, function(i, val) {
   if(val.zipcode == "yourvalue") // delete index
   {
      delete locations[i];
  }
});
这样的事情。你在寻找一个想法或一个完整的功能吗?

以下是jsFiddle

答案 1 :(得分:4)

您可以像这样写一个removeFirst函数:

function removeFirst(arr, func)
    {
        for (var i=0; i<arr.length; i++)
        {
            if (func.call(arr[i]))
            {
                arr.splice(i,1);
                return arr;
            }
        }
    }

然后调用它:

removeFirst(locations, function(){return this.zipcode=="06238";});

如果你想删除多个元素,你可以这样写:

function removeMany(arr, func)
    {
        for (var i=arr.length; i>0; --i)
        {
            if (func.call(arr[i]))
            {
                arr.splice(i,1);
            }
        }
        return arr;
    }

并以同样的方式使用它。

或者,以类似的方式使用下划线(http://documentcloud.github.com/underscore)拒绝方法:

_.reject(locations, function(location){ return location.zipcode=="06238";});

Underscore非常适合进行数组操作。

答案 2 :(得分:0)

对我来说是工人。

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

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

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

希望它有所帮助。