0

属性に基づいて配列からオブジェクトを削除する最良の方法は何ですか?

things = [{id:'23', color: 'blue'},{id:'54', color:'red'},{id:'132', color:'green'}]

id削除する必要があるのは'54'です。そのオブジェクトを配列から削除する最良のプロセスは何ですか?結果は次のようになりますthings = [{id:'23', color: 'blue'},{id:'132', color:'green'}]

ループを実行してIDを確認し、一致する場合は削除することができますが、より良い方法を探していました。

ありがとう!

4

3 に答える 3

5

フィルタ関数を使用します:

things = things.filter(function(val){return val.id!='54'});
于 2012-07-09T07:18:46.907 に答える
1

ループを実行してIDを確認し、一致する場合は削除することができますが、より良い方法を探していました。

この方法を使用できます.filter()

things = things.filter(function(item) { return item.id != '54'; });

また、jQueryを使用している場合は、$.grepメソッドを探しています。

于 2012-07-09T07:18:12.943 に答える
0

あなたは正しい方向に進んでいると思います。それと一緒に行きなさい。filterどこでもサポートされていません。

filterまたは、サポートされていない場合はフォールバックを作成する必要があります。

msdnからのコード

if (!Array.prototype.filter) {
Array.prototype.filter = function (fun /*, thisp */) {
    "use strict";

    if (this === null)
        throw new TypeError();

    var t = Object(this);
    var len = t.length >>> 0;
    if (typeof fun !== "function")
        throw new TypeError();

    var res = [];
    var thisp = arguments[1];
    for (var i = 0; i < len; i++) {
        if (i in t) {
            var val = t[i]; // in case fun mutates this
            if (fun.call(thisp, val, i, t))
                res.push(val);
        }
    }

    return res;
    };
 }

things = things.filter(function(val){return val.id!='54'});
于 2012-07-09T07:30:22.460 に答える