Javascript 将数字数组平均分配到x个数字子集中

Javascript 将数字数组平均分配到x个数字子集中,javascript,arrays,sorting,Javascript,Arrays,Sorting,我有一个大的数字数组,我需要将其分配到x个数字范围中,这样每个范围包含来自原始数组的相等数量的元素 例如,当x=4时,以下数组 [1, 1, 2.5, 3, 6, 7, 10, 11.2, 14, 25, 35, 50, 75, 85.5, 100, 120, 128.9, 150, 200, 260] 将生成一个长度为x+1的数组,其中包含以下内容 [1, 6.5, 30, 110, 260] 1是数组中的最小值 6.5是6和7的中点 30是25和35的中点 110是100和120的中点

我有一个大的数字数组,我需要将其分配到x个数字范围中,这样每个范围包含来自原始数组的相等数量的元素

例如,当
x=4
时,以下数组

[1, 1, 2.5, 3, 6, 7, 10, 11.2, 14, 25, 35, 50, 75, 85.5, 100, 120, 128.9, 150, 200, 260]
将生成一个长度为
x+1
的数组,其中包含以下内容

[1, 6.5, 30, 110, 260]
  • 1是数组中的最小值
  • 6.5是6和7的中点
  • 30是25和35的中点
  • 110是100和120的中点
  • 260是最高值
基本上,这将给我4个数字范围1-6.5、6.5-30、30-110和110-260。每个范围将包含原始数组的5个数字

需要能够处理动态数量的元素,这些元素不一定被x平均分割。


我问了,但有人告诉我这更像是一个编程问题。

基于你的问题,下面的javascript代码应该满足你的要求,我已经用几个x值测试了它的正确性,但是你可能想检查一下,这段代码是否适用于你的问题的所有可能的测试用例

var-arr=[1,1,2.5,3,6,7,10,11.2,14,25,35,50,75,85.5,100,120,128.9,150,200,260,261,262,263,264,265];
总要素=总长度;
var x=5;
var each_set_elem=总元素/x;
var i=1;
var-temp=[];
温度推力(arr[0]);
对于(i=每个集合元素;i<总计元素;i+=每个集合元素){
这个元素=(arr[i]+arr[i-1])/2;
温度推动(该要素);
}
温度推力(arr[总要素-1]);

控制台日志(temp)这确实是你可以用一个程序解决的问题,但是对于这个网站来说太简单了一点。回答这个问题的唯一办法是为你做这项工作,这是这里没有人会做的。如果您有兴趣了解如何为这个用例创建一个基本的javascript函数,请了解for循环是如何工作的,以及非常基本的Math.floor,和Array.push方法。@Ryan:到目前为止,您使用javascript尝试了哪些代码?如果
x
不划分数组的长度会怎么样?我需要将剩余部分平均分布在各个范围内。因此,如果输入数组有18个元素且x=4,则输出数组的范围应包含[5,5,4,4]。这有意义吗?@RyanDantzler-durnig循环创建子集,如果余数不等于0,则向子集大小添加1,并从余数中减去1。最终余数变为零。这会处理输入数组中奇数个元素吗?因为我需要它是动态的。@RyanDantzler:是的,这也适用于元素数为奇数的数组,只要您可以将元素总数除以所需范围内的相应元素集,例如,将25个元素分成5组,每组5个元素,请查看我更新的代码段,我在这里展示了奇数大小写,有25个元素,x=5。我的意思是,它需要能够处理一些不能被x精确除的元素。@RyanDantzler:无论如何,你必须对我的代码进行一些编辑,使其在x不除数组长度时运行,这应该是一个很好的起点。