我需要将大量数字分配到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]
基本上,这将给我4个范围的数字1-6.5,6.5-30,30-110和110-260。每个范围将包含原始数组的5个数字。
需要能够处理动态数量的元素,这些元素不一定会被x均匀分割。
我问this question on Mathematics,但被告知这更像是一个编程问题。
答案 0 :(得分:1)
根据您的问题,以下javascript代码应该满足您的要求,我已经使用x的一些值测试了它的正确性,但是您可能想要检查此代码是否适用于您的问题的所有可能的测试用例。 / p>
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];
total_elem = arr.length;
var x = 5;
var each_set_elem = total_elem / x;
var i = 1;
var temp = [];
temp.push(arr[0]);
for (i = each_set_elem; i < total_elem; i += each_set_elem) {
this_elem = (arr[i] + arr[i - 1]) / 2;
temp.push(this_elem);
}
temp.push(arr[total_elem - 1]);
console.log(temp);
此代码满足问题中的测试用例以及x = 5,它会吐出正确的6个点,这样5个范围每个都有4个来自给定数组的元素。