javascript - 从调用 forEach() 数组方法的方法返回。 JavaScript

标签 javascript arrays foreach ecmascript-5

我正在使用从 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/

相关文章:

javascript - 如何获取acl角色对应的所有用户?

arrays - 遍历元组数组

arrays - 如何创建包含不同类型数组的 swagger 模式

jsp - 如何迭代 <c :forEach> 中的嵌套映射

foreach - Knockout JS foreach嵌套,所有字段的值更新

java - Java 的 ArrayList.forEach 在 while 循环内无法正常工作

javascript - Lerna 能否根据 Conventional Commits 规范提升预发布版本?

javascript - 无效值错误 : initAutocomplete is not a function Google Places and Autocomplete API

javascript - 有兴趣跟踪用户浏览网站时触发的事件

arrays - 使用 MLAB API 更新数组内容?