我正在使用从 JavaScript 中的数组调用的 forEach() 方法。当我写作时return;
在为数组中的每个元素调用的方法内部的某处,我从为特定元素调用的方法中返回,仅此而已。但我真正想要的是从数组调用 forEach() 的方法中返回。这是代码:
function addToCart(pizza, size)
{
Cart.forEach(function(cartItem)
{
if(pizzaAndSizeAreTheSame(cartItem, pizza, size))
{
cartItem.quantity++;
updateCart();
//Want go out from addToCart if this return is reached
return;
}
});
//Don`t want the code run after return;
Cart.push
({
pizza: pizza,
size: size,
quantity: 1
});
updateCart();
}
这是我到目前为止提出的解决方案:
function addToCart(pizza, size)
{
var leaveTheMethod = false;
Cart.forEach(function(cartItem)
{
if(pizzaAndSizeAreTheSame(cartItem, pizza, size))
{
cartItem.quantity++;
updateCart();
leveTheMethod = true;
}
});
if(leaveTheMethod)
{return;}
//Don`t want the code run after return;
Cart.push
({
pizza: pizza,
size: size,
quantity: 1
});
updateCart();
}
我想知道是否有更好的解决方案来解决这个问题。
与该问题相比:如何像调用break一样短路Array.forEach? https://stackoverflow.com/questions/2641347/how-to-short-circuit-array-foreach-like-calling-break我对了解 forEach() 循环中的新方法不感兴趣,我想不是从 forEach() 中中断,而是从包含 forEach() 调用者方法中中断。