如何删除JSON对象中的对象?

时间:2013-11-06 19:09:22

标签: javascript jquery json object

让我解释一下。

我有很多对象的这个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)。所以我需要在不改变“数据”结构的情况下删除对象。

任何帮助?

3 个答案:

答案 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++;
    }
}