计算要填充的可用插槽数量

时间:2018-09-02 22:20:02

标签: javascript math iteration

想象一下,我有一个4x5的容器,里面有20个可用插槽。在这个容器中,我有13个正方形和7个圆圈:

enter image description here

但是现在容器缩小到3x3,只有9个可用插槽。

我想在这个较小的容器中显示相同的正方形与圆形比率,每个正方形的最后一个是一堆剩下的项目。

现在,我将每种类型的项目的数量除以所有项目的总数量,以获得该类型占总数量的百分比值,然后将其乘以容器大小:

const percentage = typeCount / totalCount;
const spaceUnrounded = percentage * availableSlots;

所以这不是问题。问题出在我需要将其舍入为整数以获取正确数量的插槽时。现在,我正在寻找价值的底线:

const space = Math.floor(spaceUnrounded);

但这会导致这些项目将1个空格留空。我还尝试过找到第一种类型的值的上限,然后是其余类型的值:

const space = index === 0 ? Math.ceil(spaceUnrounded) : Math.floor(spaceUnrounded);

但这可能导致项目增加1个额外的空间,具体取决于项目类型的数量。

Math.round有相同的问题。

我在这里可以做什么?

编辑:我的预期输出可能是6个正方形和3个圆,因为13是20的65%,而9的65%是5.85:

enter image description here

1 个答案:

答案 0 :(得分:2)

选择要“具有权威性”的数字(圆形或正方形,无关紧要),然后从插槽总数中减去该数字以获得另一个数字。

> slots = 20
> squares = 13
> circles = 7
> newslots = 9
> newsquares = Math.round(newslots/slots*squares)
6
> newcircles = newslots - newsquares
3