2012-07-26 149 views
3

可能重复:
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

使用过滤器,并重新分配

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

这看起来像它会删除整个数组,而我只需要删除具有选定名称的对象。 – 2012-07-26 00:07:33

+0

删除一个项目等于选择没有删除项目的其他项目。这是使用列表 – blueiur 2012-07-26 00:10:14

+0

OHHHHH的简单解决方案。 DERP。我只是真的看到了代码,谢谢这正是我正在寻找的。 Derp derp derp。 – 2012-07-26 00:11:40

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); 
} 

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

+0

这将工作,但我如何找到对象的索引,只给出对象的名称? – 2012-07-26 00:08:48

+0

@dalton更新 – hvgotcodes 2012-07-26 00:11:22

+0

这将工作,但我更喜欢上述答案,这是更简单,重点。虽然谢谢! – 2012-07-26 00:12:36