1

私は次の構造の配列を持っています:

var y = [{id:12,count:10}, {id:23,count:89}, {id:21,count:100},]

id:23の要素を削除するにはどうすればよいですか?

配列Array.prototype.removeでプロトタイプメソッドを作成するために使用するつもりはありません

どんなポインタもありがたい

ありがとう

4

3 に答える 3

5

ES5 コード:

y = y.filter(function( obj ) {
    return obj.id !== 23;
});

ES5 は、すべての主要なブラウザーで広くサポートされています。それでも、古いブラウザをバックアップするために、いくつかの Shim の 1 つを含めることをお勧めします。

于 2012-04-24T18:21:36.907 に答える
3
for (i in y) {
    if (y[i].id == 23) {
       y.splice(i, 1);
       break;
    }
}
于 2012-04-24T18:22:10.867 に答える
0

Denis Ermolin の答えはオプションですが、いくつかの問題が発生する可能性があります。

for(var i=0;i<y.length;i++)
{
    if (y[i].hasOwnProperty('id') && y[i].id === 23)
    {
        delete(y[i]);
        break;
    }
}

配列を使用する場合は、for - inループを回避することを常にお勧めします。これは をループするArray.prototypeため、インデックス番号ではなくiが突然含まれる可能性があります。length

オブジェクトを扱っている場合、for inループは素晴らしいことですが、繰り返しになりますが、プロトタイプをループするため、hasOwnPropertyメソッドを使用する方がよいのです。

残りはかなり簡単だと思います...幸運を祈ります

于 2012-04-24T18:29:15.737 に答える