Вот пример того, как вы могли бы реализовать это:
ользую метод forEach (), вызываемый из массива в JavaScript. Когда я пишу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();
}
Я хотел бы знать, есть ли лучшие решения проблемы.
По сравнению с этим вопросом:Как замкнуть Array.forEach, например, вызвать прерывание? Меня не интересует знание нового метода в цикле forEach (), и я хочу отказаться не от forEach (), а от охвата метода вызывающего forEach ().