2012-02-08 130 views
2

我有JSON对象,看起来像下面的对象,这个对象可以持续几天。所以我想知道是否有我可以在下面的例子中删除全集相当于位置[0]或位置[1]的全集。我不得不首先迭代Object并试图找出哪个是哪个。因此,可以说我正在寻找删除邮编为06238的集合,我需要遍历整个位置对象并找出它在对象中的集合,然后相应地删除它。问题是我不知道如何处理这个概念。jquery javascript从JSON对象中删除对象数据

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

回答

15

只是简单地传递你去通过正常的JSON迭代这样

jQuery.each(locations, function(i, val) { 
    if(val.zipcode == "yourvalue") // delete index 
    { 
     delete locations[i]; 
    } 
}); 

类似的东西指数

delete locations[0]; 

。你在寻找一个想法还是一个完整的功能。

这里是jsFiddle

+0

这里是jsfiddle的例子http://jsfiddle.net/ChpFu/ – 2012-02-08 03:23:12

+3

我会谨慎从数组中删除元素,而迭代通过它,特别是如果使用像'jQuery.each()'这样的方法缓存'.length'开始之前... – nnnnnn 2012-02-08 03:30:42

+0

一个完整的解决方案总是很好,永远不会否认其中的一个:-D 然而,一个足部容纳的东西总是适用于。我认为这对我很好。我很快就会对此进行测试,谢谢 – chris 2012-02-08 03:31:17

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";}); 

下划线是这样做的数组操作相当好。

+1

Removemany()中的For循环应该是for(var i = arr.length; i> 0; --i)。 – San 2012-10-03 21:59:30

0

它是我的工人。

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

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

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

希望它有帮助。