我正在開發一個Javascript練習,它需要一個可以搜索數組中某個特定對象的函數。如果存在這樣的對象,該函數應該刪除該對象,然後返回該數組。如果數組中不存在這樣的對象,則該函數應返回一個字符串,表示該對象不存在。如何在數組中找到對象,然後刪除它並返回數組?
到目前爲止,我已經寫下了下面的代碼,以購物車爲例,但是我沒有得到期望的結果。如果我在購物車[0]上搜索對象,它會按預期工作。但是,索引大於0的任何內容都會返回「該項目不在您的購物車中」。我究竟做錯了什麼?
var cart = [{apples: 12}, {oranges: 20}, {grapes: 35}, {peaches: 18}]
function removeFromCart(item){
for (var i = 0; i < cart.length; i++){
if (cart[i].hasOwnProperty(item)) {
cart.splice(i, 1);
return cart;
}
else {
return "That item is not in your cart.";
}
}
}
呦你可能想看看[Array#filter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)。 – elclanrs
@trincot - 當然會的,因爲它沒有在'cart'上被調用。 – nnnnnn
無論如何,你的循環是壞的,可以說你想刪除的項目是數組中的第二個,當它開始循環時,第一個項目會轉到else,並且因爲return語句而停止循環,所以它永遠不會經歷所有這些。 – noitse