我正在使用从 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();
}
我想知道是否有更好的解决方案。
与该问题相比:How to short circuit Array.forEach like calling break? 我对了解 forEach() 循环中的新方法不感兴趣,我想不是从 forEach() 中中断,而是从包含 forEach() 调用者方法中中断。
最佳答案
function addToCart(pizza, size) {
var res = Cart.some(function(cartItem)) {
if(pizzaAndSizeAreTheSame(cartItem, pizza, size)) {
cartItem.quantity++;
updateCart();
//Want go out from addToCart if this return is reached
return true;
}
return false;
});
if(res) {
return;
}
//Don`t want the code run after return;
Cart.push({
pizza: pizza,
size: size,
quantity: 1
});
updateCart();
}
关于javascript - 从调用 forEach() 数组方法的方法返回。 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42329523/