上家那时候,我刚画完页面,就接到了这个需求:
一开始我刚拿到这个需求有些懵逼,履了履思路,然后还是一头懵逼。可能当时脑阔有点昏,不会写然后就是同事帮忙处理的。
需求如下:
现在我固定好了商品数量,和员工人数,将商品依次分给选定的人员。
倘若每人分完以后,还有多的商品那么多的商品就优先分给编号靠前的人。
例如:10个商品,3个人,最终结果为
1号分到了:1,4,7,10
。
2号分到了:2,5,8。
3号分到了:3,6,9;
一开始我不会整,后端首先给我提到了“轮询”这个词。网上大部分都是些什么ajax请求之类的啥啥啥的,然后大部分文章都是以一copy百而来,完全摸不到头绪。虽然需求理解,但不知道从何入手,最终还是被自己菜的出油的实力所击败,交由同事处理,同事处理完后我在改进,最终实现了效果。
现如今我闲的,重新履了一遍然后就发现其实也没那么复杂。接下来咱们就开始上代码。
//先简单定义好商品,以及员工
var goods = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"];
var person = [
{
id: 1,
good: []
},
{
id: 2,
good: []
},
{
id: 3,
good: []
},
];
//然后我们需要知道我们这种可以轮几次,以及每一次循环开始的基数
var counts = 0; //可以循环几次
var num = 1; //每一次循环的基数
//如果商品足够每个人一人拿一件
if (goods.length % person.length == 0) {
counts = parseInt(goods.length / person.length);
} else {
//如果不够整除说明肯定有人多拿,轮次+1
counts = parseInt(goods.length / person.length) + 1;
}
//具体轮几次,我们是未知数,所以用for循环
for (var index = 1; index <= counts; index++) {
//当循环是第一轮,基数为1,以后基数为(人数*(轮数-1))
if (index != 1) {
num = (index - 1) * parseInt(person.length);
} else {
num = 1;
}
//每个人一轮一轮去拿对应的商品
person.forEach((res, i) => {
//这里主要是区分是不是第一轮
if (index == num) {
res.good.push(goods[i])
} else {
//当商品存在时,添加到数组
if (goods[i + num]) {
res.good.push(goods[i + num])
}
}
});
}
console.log(person);
最终总算是完成了这个花里胡哨的需求(因为本人偏菜,随意对本人来说有些花里胡哨,当然对各位大佬来说完全小case)。
第一次发文,不是很会,大家别嫌弃。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!