根据属性从数组中删除对象的最佳方法是什么?
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然后删除它,如果匹配但我正在寻找更好的方法。
谢谢!
答案 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'});