假设 1-4, 5-8, 9-12, 13-16, 17-20 分组意味着您需要 5 个组,第一个 (1-4) 包含 [1, 4 ] 间隔;第二个 (5-8) 包含 [5, 8] 区间内的所有数字,依此类推。
// numbers and intervals must be in ascending order
var numb = [5,10,11,6,7,18,1,8,2,1,15,12,4,5,3,4,6,7,15,20];
// 1-4 , 5-8 , 9-12 , 13-16 , 17-20
var intervals = [4, 8, 12, 16, 20];
numb.sort(function (a, b) {
return a - b;
});
var groups = [];
var j = 0;
for (var i = 0; i < intervals.length; i++) {
var group = [];
while (numb[j] <= intervals[i]) {
group.push(numb[j]);
j++;
}
groups.push(group);
}
console.log(groups);
输出:
[ [ 1, 1, 2, 3, 4, 4 ],
[ 5, 5, 6, 6, 7, 7, 8 ],
[ 10, 11, 12 ],
[ 15, 15 ],
[ 18, 20 ] ]
编辑:阅读有关根据数组中的最大数计算间隔的评论后。
var numb = [5,10,11,6,7,18,1,8,2,1,15,12,4,5,3,4,6,7,15,20];
numb.sort(function (a, b) {
return a - b;
});
var max = numb[numb.length - 1];
// Five groups based on the max value of the array
var increment = max / 5;
var groups = [];
var j = 0;
for (var i = increment; i <= max; i += increment) {
var group = [];
while (numb[j] <= i) {
group.push(numb[j]);
j++;
}
groups.push(group);
}
console.log(groups);
输出:
[ [ 1, 1, 2, 3, 4, 4 ],
[ 5, 5, 6, 6, 7, 7, 8 ],
[ 10, 11, 12 ],
[ 15, 15 ],
[ 18, 20 ] ]