我的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"
}
]
}
答案 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;
}
});
它返回一个没有该对象的数组。
希望它有所帮助。