首页 > 解决方案 > 为每个用户划分数量

问题描述

如何按用户划分为每 4 个或总用户的剩余部分?

数量值 4 很好用,但 5 也没有余数...

如何在没有 if 块的情况下申请?在两次循环中。

var quantity = 5;
var limit = Math.ceil(quantity / 4)
var users = [...Array(limit).keys()];

for(var i = 0; i < users.length; i++)
{
    if(i != users.length-1) // check is last
    {
        for(var r = 0; r < 4; r++)
        {
            console.log('index of user: ' +i + ' action index: ' + r);
        }
    } else { // of remainder (i no found solution in this block)

    }
}

样本输出:

index of user: 0 action index: 0
index of user: 0 action index: 1
index of user: 0 action index: 2
index of user: 0 action index: 3
index of user: 1 action index: 4 (only this not real on code)

最后编辑:

如何在循环中应用 if 块?我想我们是循环的。

var quantity = 5; // max action
var limiter = 4; // per user action limit

var limit = Math.ceil(quantity/limiter);
var users = [...Array(limit).keys()];


users.forEach((user, i) => {
  for(let j=0; j<limiter; j++) {

    if(i*limiter + j >= quantity) // make it loop
        break;

    console.log(`index of user ${i} action index: ${i*limiter + j}`) 
  }
});

标签: javascript

解决方案


在回顾了这个之后,我认为最好的办法是单独存储动作编号,然后使用索引来获取它的倍数。我无法从您提供的内容中判断4in 限制是否与操作数量有关,但如果是,您可以简单地将变量替换为它的位置。

var quantity = 5;
var limit = Math.ceil(quantity/4);
var users = [...Array(limit).keys()];

var actions = 4;

users.forEach((user, i) => {
  for(let j=0; j<actions; j++) {
    console.log(`index of user ${i} action index: ${i*actions + j}`) 
  }
});


推荐阅读