当数字达到嵌套循环内的每个第 n 个值时

When number reaches every nth value inside nested loop

用途:用户可以选择产品类型和该产品类型的变体。我需要跟踪添加的每个产品类型以及添加的变体数量。例如,
项目 1:衬衫 > 长袖 (1)
item 2: 衬衫 > V 领 (3)
item 3: 裤子 > 牛仔裤 (1)

总金额与产品的变化有关。每当用户选择相同类型的第 4 个变体时,我希望发生一些事情。对于此示例,我希望产品类型 Shirt 发生一些变化,因为当前长袖 + v 领 = 4

我有两个嵌套循环。第一个是遍历每个产品类型,内循环应该遍历每个变体并得到总和。

这是一个很好的起点,但我似乎无法通过 for 循环来检查总变化数的每个第 n 个值。

jQuery('.product').each(function(i, objP){
    var sum = 0,
    min = 4,
    max = 5;        
    jQuery(objP).find('.product-variation-quantity').each(function(ii, objC){
        sum += parseInt(jQuery(objC).text());
        return sum;
        for ( var x = 0; x < min * max; x += min) {
            if ( sum == x ) {
                var sum_id = jQuery(objP).attr('id');
                console.log(sum_id);
                //product quantity has reached min to pass
            }
            else {
                //has not reached min
            }
        }
    });
});

有什么帮助吗? 注意:objP 和 objC 用于跟踪上下文 this
注 2:澄清一下:每 4 日、8 日、12 日等值,都会发生一些事情,而不是每 4 日、5 日、6 日

这个怎么样:如果选择了 8 个相同变体的项目,控制台将显示

[id] has crossed 2x4 items

代码:

jQuery('.product').each(function(i, objP){
    var min = 4,
        max = 5,
        sum_id;        
    jQuery(objP).find('.product-variation-quantity').each(function(ii, objC){
        var count = parseInt(jQuery(objC).text());
        if ( count < min ) {
            //product quantity has not reached min
        }
        else {
            // product quantity has reached min to pass
            sum_id = jQuery(objP).attr('id');
            console.log(sum_id + ' has crossed ' + min + 'x' 
                    + Math.floor(count/min) + ' items');
        }
    });
});

首先,你的代码中有一个错误,它是你在嵌套循环中 return sum; 的地方。之后的 for 循环永远不会执行。

我建议这个代码:

jQuery('.product').each(function(i, objP){
    var sum = 0,
    min = 4,
    max = 5;   
    var ind = 1; 
    jQuery(objP).find('.product-variation-quantity').each(function(ii, objC){
        sum = parseInt(jQuery(objC).text());
        if (sum > 0 && sum % 4 == 0) {
            // Do something
        }

    });
});

Here's codepen sample.