【发布时间】:2017-08-03 02:30:13
【问题描述】:
我正在做一个 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。
-
@trincot - 当然会,因为
cart没有调用它。 -
无论如何你的循环都很糟糕,假设你要删除的项目是数组中的第二个,当它开始通过 for 循环时,在第一个项目上它会转到 else,并停止循环,因为return 语句,它永远不会通过所有这些。
标签: javascript object splice