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 回答