Arrays 动态创建垃圾箱?

Arrays 动态创建垃圾箱?,arrays,algorithm,coldfusion,Arrays,Algorithm,Coldfusion,我有一个项目,用户应该输入的箱子数量。此数字的范围为0到1000。例如,如果用户选择10,下一步将检查数组中的最高值。数组保存数值。下面是一个例子: <cfset myArray = [5,45.74,9,21,88.78,33.56,12]> <cfif 5 LTE 8.9> <cfset arrayAppend(array1, 5)> <cfelseif 5 GT 8.9 AND 5 LTE 17.8> <cfset array

我有一个项目,用户应该输入的箱子数量。此数字的范围为0到1000。例如,如果用户选择10,下一步将检查数组中的最高值。数组保存数值。下面是一个例子:

<cfset myArray = [5,45.74,9,21,88.78,33.56,12]>
<cfif 5 LTE 8.9>
  <cfset arrayAppend(array1, 5)>
<cfelseif 5 GT 8.9 AND 5 LTE 17.8>
  <cfset arrayAppend(array2, 5)>
<cfelseif ...>
在我创建了bin之后,下一步是将myArray中的每个值放入正确的bin/数组中。这很棘手,我不确定什么是解决这个问题的最佳方法/解决方案。如果垃圾箱的数量是静态的/总是相同的,这将更容易。在这种情况下,我必须循环myArray并检查bin值属于哪个。下面是一个例子:

<cfset myArray = [5,45.74,9,21,88.78,33.56,12]>
<cfif 5 LTE 8.9>
  <cfset arrayAppend(array1, 5)>
<cfelseif 5 GT 8.9 AND 5 LTE 17.8>
  <cfset arrayAppend(array2, 5)>
<cfelseif ...>
等等


基本上,我必须检查值所属的范围,然后在数组中附加该值位置示例5在myArray中有位置1,所以我想附加1来存储该bin的值。这就是为什么我必须存储值的位置而不是值本身的原因。最大的问题是要弄清楚,如果用户改变了垃圾箱号码,这是如何工作的。例如,如果用户选择12而不是10。那么我的if语句就不同了。如果有人能提供任何帮助,那将是很有帮助的。提前谢谢

您可能想使用模运算。一旦您有了bin,您就可以对其进行散列,并使用映射来查找bin

>>> getBin = lambda x: x - (x % 8.9)
>>> getBin(0)
0.0
>>> getBin(8.7)
0.0
>>> getBin(8.9)
8.9
>>> getBin(11)
8.9
>>> getBin(20)
17.8
>>> getBin(89.9)
89.0
>>> 

您应该根据最高值和最低值之间的差异来确定仓位大小。如果只基于最高值,那么最终可能会有一大堆空箱子。