从数组中删除对象?

时间:2012-07-26 00:02:22

标签: javascript arrays node.js object

  

可能重复:
  JavaScript Array Delete Elements

所以,在javascript中,我有这个设置:

global.menu = [{
   name: item1,
   price: price1,
   message: message1
},
{
   name: item2,
   price: price2,
   message: message2
},
{
   name: item3,
   price: price3,
   message: message3
}];

我的问题很简单,但是如何从这个数组中删除一个对象呢? 要选择一个对象,我正在使用此命令:

global.HandleMenu = function (b) {
    var c = menu.filter(function (d) {
        return d.name == b;
    });
    c.forEach(function (d) {
        Say(d.message);
    });
};

所以是的。我可以在forEach函数中添加delete d;或d.remove()吗?或者我错过了什么?

2 个答案:

答案 0 :(得分:3)

假设您要删除的项目的名称位于名为name的变量中,例如

for (var i = 0; i = global.menu.length - 1; i--) {
   var current = global.menu[i];
   if (current.name === name) global.menu.splice(i, 1);
}

应该有效。注意我没有测试空值;但这是一般的想法。

答案 1 :(得分:2)

使用过滤器并重新分配

global.menu = global.menu.filter(function(a){ return a.item != "be delete" };