2012-07-26 238 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