2

让我解释。

我得到了这个带有许多对象的 JSON:
data = [{"id":"784","label":"blah","publisher":"me"},{"id":"785","label":"bleh","publisher":"you"},{"id":"786","label":"blih","publisher":"she"}];

例如:我想删除 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 自动完成)。所以我需要在不改变“数据”结构的情况下删除对象。

有什么帮助吗?

4

3 回答 3

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

高温高压

于 2013-11-06T19:14:22.073 回答
1

这是一个对象数组,所以试试:

for (var i = 0; i < data.length; i++) {
    if (data[i].id == 785) {
        data.splice(i, 1);
        break;
    }
}
于 2013-11-06T19:11:51.560 回答
0

试试这个(小提琴:http: //jsfiddle.net/U94Ym/1/):

var i = 0;
while (i < data.length) {
    if (data[i].id === "785") {
        data.splice(i, 1)
    }
    else {
        i++;
    }
}
于 2013-11-06T19:13:40.430 回答