1

在 Javascript 中,如果我有一个数字范围,比如 0-10000。像这样:

var min = 0;
var max = 10000;

我想通过输入将此范围分成多个桶:

var buckets = 5;

在这种情况下,我想返回一个拆分此范围的数字数组:即。结果数字将是:0、2000、4000、6000、8000、10000

如果我说 10 个桶,数字将是 0、1000、2000 等......

我的问题是如果我有 8 个桶、12 个桶、32 个桶......我将如何在 javascript 中执行此操作?谢谢。

4

3 回答 3

2

我遇到了同样的问题,但还需要创建一个字符串文字来描述每个存储桶,比如一个“从-到”字符串。改变 Seva Arkhangelskiy 的答案,这是我想出的功能。它返回每个存储桶的限制范围,以及存储桶的专有名称。

function distribute (max, buckets) {
    var arr = [], rpt = max / buckets, groupLiteral_low;
    for (var i = 0; i < max; i += rpt) {
        if (Math.ceil(i) != i || i==0) {
            groupLiteral_low = Math.ceil(i);
        } else {
            groupLiteral_low = Math.ceil(i)+1;
        }
        arr.push({
            "limit": (Math.floor(rpt+i)),
            "literal": groupLiteral_low + "-" + (Math.floor(rpt+i))
        });
    }
    return arr; 
}

比如distribute(100,3)会返回​</p>

0: Object { limit: 33, literal: "0-33" }​
1: Object { limit: 66, literal: "34-66" }​
2: Object { limit: 100, literal: "67-100" }
于 2018-07-03T09:53:34.843 回答
1
var dif = max - min;
var a = dif/bucked;

for (var i=min; i<=max;i=i+a){
  i;
}
于 2014-12-12T19:04:01.287 回答
1
var min = 0,
    max = 1000,
    buckets = 8,
    i, array = [];

for (i = min; i <= max; i += (max - min) / buckets) {
    array.push(i);
}
于 2014-12-12T19:09:25.717 回答