让我解释一下。
我有很多对象的这个JSON:
data = [{"id":"784","label":"blah","publisher":"me"},{"id":"785","label":"bleh","publisher":"you"},{"id":"786","label":"blih","publisher":"she"}];
Ex:我想删除id = 785
的对象我试过了:
$.each( data, function( key, value ) {
if(value.id == '785'){
delete data[key];
}
});
它有效,但它会改变'数据'结构。现在看起来像这样:
data = ["0":{"id":"784","label":"blah","publisher":"me"},"2":{"id":"786","label":"blih","publisher":"she"}]
我正在使用一个不接受此结构的插件(jQuery UI Autocomplete)。所以我需要在不改变“数据”结构的情况下删除对象。
任何帮助?
答案 0 :(得分:3)
另一种方法是在数组上使用过滤器:
var data = [{"id":"784","label":"blah","publisher":"me"},{"id":"785","label":"bleh","publisher":"you"},{"id":"786","label":"blih","publisher":"she"}];
var result = data.filter(function(x){return x.id !== '785'; });
HTH
答案 1 :(得分:1)
这是一个对象数组,所以请尝试:
for (var i = 0; i < data.length; i++) {
if (data[i].id == 785) {
data.splice(i, 1);
break;
}
}
答案 2 :(得分:0)
试试这个(小提琴:http://jsfiddle.net/U94Ym/1/):
var i = 0;
while (i < data.length) {
if (data[i].id === "785") {
data.splice(i, 1)
}
else {
i++;
}
}