根据属性从数组中删除对象的最佳方法?

时间:2012-07-09 07:16:39

标签: javascript

根据属性从数组中删除对象的最佳方法是什么?

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然后删除它,如果匹配但我正在寻找更好的方法。

谢谢!

3 个答案:

答案 0 :(得分:5)

使用过滤功能:

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

答案 1 :(得分:1)

  

我可以运行一个循环并查看id,如果匹配则删除它   但我一直在寻找更好的方法。

您可以使用.filter()方法。

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

如果您使用的是jQuery,那么您正在寻找$.grep方法。

答案 2 :(得分: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'});