JavaScriptの配列から呼び出されたforEach()メソッドを使用しています。配列のすべての要素のために呼び出されるメソッドのどこかにreturn;
を書き込むと、特定の要素のために呼び出されたメソッドから戻ります。しかし、私が実際に望むのは、forEach()という配列のメソッドから戻ることです。ここでは、コードは次のとおりです。forEach()配列メソッドが呼び出されたメソッドからの戻り値。 JavaScript
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();
}
を私が問題に任意のより良い解決策がある知っているしたいと思います:
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();
}
ここで私はこれまでのところまで来たとソリューションです。その質問に比べ
:How to short circuit Array.forEach like calling break? 私はforEachの()ループ内で新しい方法を知ることに興味がないと私はないのforEach(から壊したく)が、forEachの()の呼び出し元のメソッドを網羅するから。
は何かが発見されたかどうかを確認するために比較 'pizzaAndSizeAreTheSame'です:?ここ
はそれを実装することができますの例ですか。その場合は、['find'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find)または[' some'](https:// developer .mozilla.org/ja-jp/docs/Web/JavaScript/Reference/Global_Objects/Array/some)! –
文から返る唯一の方法はスロー/キャッチすることです: http://stackoverflow.com/questions/2641347/how-to-short-circuit-array-foreach-like-calling-break – laser
右、 '.some ()はあなたが探しているものです。コールバックが 'true'を返すと、反復は止まり、' .some() 'も' true'を返します。 – Pointy