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 Autocomplete) を使用しています。したがって、「データ」構造を変更せずにオブジェクトを削除する必要があります。

何か助けはありますか?

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

HTH

于 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 に答える