Javascript将数组划分为多个范围

Javascript将数组划分为多个范围,javascript,statistics,range,Javascript,Statistics,Range,我需要一个函数,可以将给定的数据集划分为x个相等的范围。它应该首先得到数据集的最小值和最大值,然后从中得到排列(max-min)。然后,它将这个排列分成x个部分,并返回一个包含x个数字的数组。数字表示该范围内的数字数量,数组的索引表示该范围 我的职能: 函数getRanges(数据集,numranges) { min=Math.min.apply(数据集); max=Math.max.apply(数据集); 排列=最大-最小; 阶跃=排列/数值范围; 范围=[]; 对于(i=0;i=0&&n=0

我需要一个函数,可以将给定的数据集划分为x个相等的范围。它应该首先得到数据集的最小值和最大值,然后从中得到排列(max-min)。然后,它将这个排列分成x个部分,并返回一个包含x个数字的数组。数字表示该范围内的数字数量,数组的索引表示该范围

我的职能:

函数getRanges(数据集,numranges)
{
min=Math.min.apply(数据集);
max=Math.max.apply(数据集);
排列=最大-最小;
阶跃=排列/数值范围;
范围=[];
对于(i=0;i=0&&n<0.1

12个数字
n>=0.1&&n<0.2

28个数字
n>=0.2&&n<0.3

等等

实际输出:
[]


(不是开玩笑)

有一些问题:

  • 您使用的
    Math.min.apply
    Math.max.apply
    方法错误

  • 您的
    ranges
    变量是一个空数组,因此当您运行
    ranges[i]++
    时,它会给出
    NaN

  • 您的预期输出不正确,因为
    步骤
    不是
    0.1

  • 以下是工作版本:

    函数getRanges(数据集,numranges)
    {
    min=Math.min.apply(空,数据集);
    max=Math.max.apply(空,数据集);
    排列=最大-最小;
    阶跃=排列/数值范围;
    范围=[];
    
    对于(i=0;i而言,存在一些问题:

  • 您使用的
    Math.min.apply
    Math.max.apply
    方法错误

  • 您的
    ranges
    变量是一个空数组,因此当您运行
    ranges[i]++
    时,它会给出
    NaN

  • 您的预期输出不正确,因为
    步骤
    不是
    0.1

  • 以下是工作版本:

    函数getRanges(数据集,numranges)
    {
    min=Math.min.apply(空,数据集);
    max=Math.max.apply(空,数据集);
    排列=最大-最小;
    阶跃=排列/数值范围;
    范围=[];
    
    对于(i=0;i使用以下任一解决方案从数组中创建范围。范围从数组中的最小值开始,到数组中的最大值结束。请告诉我这是否有效

    //需要划分为n个范围的示例数组
    常数arr=[10,20,34,20,50,76];
    //1.计算阵列的最小值和最大值
    const min=Math.min(…arr);
    const max=数学最大值(…arr);
    //2.以[[10,20]、[20,30]、[30,40]]格式计算范围
    常量getRangeArray=(最小值、最大值、n)=>{
    常数增量=(最大-最小)/n;
    常数范围=[];
    设量程1=min;
    对于(设i=0;i{
    常数增量=(最大-最小)/n;
    常数范围=[];
    设量程1=min;
    
    对于(让i=0;i使用以下任一解决方案从数组中创建范围。范围从数组中的最小值开始,到数组中的最大值结束。让我知道这是否有效

    //需要划分为n个范围的示例数组
    常数arr=[10,20,34,20,50,76];
    //1.计算阵列的最小值和最大值
    const min=Math.min(…arr);
    const max=数学最大值(…arr);
    //2.以[[10,20]、[20,30]、[30,40]]格式计算范围
    常量getRangeArray=(最小值、最大值、n)=>{
    常数增量=(最大-最小)/n;
    常数范围=[];
    设量程1=min;
    对于(设i=0;i{
    常数增量=(最大-最小)/n;
    常数范围=[];
    设量程1=min;
    
    对于(让i=0;i养成声明所有局部变量的习惯是个好主意。养成声明所有局部变量的习惯是个好主意。就是这样!还有一个错误:它不包括数据集的最后一个数字。我认为
    范围的最后一个元素在返回之前应该最后一次递增。这是是一个灰色区域tho,因为从技术上讲它将不符合条件。修复#2:有时返回的数组的元素比请求的少,因为单元格是空的。数组还将包含“空”单元格。添加
    范围。推(0);
    之前(n=0;你是对的。因为我们已经知道数组的长度,我认为如果我们用
    新数组(numranges)创建一个0填充的数组会更好。fill(0)
    从一开始就是这样!还有一个错误:它不包括数据集的最后一个数字。我认为
    范围的最后一个元素在返回之前应该最后增加一次。这有点灰色,因为从技术上讲,它将不符合条件。修复#2:有时返回的数组的元素会更少因为单元格是空的,所以nts比请求的多。数组还将包含“空”单元格。在
    之前添加
    范围。推(0);
    for(n=0;你是对的。因为我们已经知道数组的长度,所以我认为最好从一开始就用
    新数组(numranges)创建一个0填充的数组。填充(0)
    getRanges( [
    0.015451195257224088,
    0.05483521461643034,
    0.06617379094530743,
    0.07870092892661003,
    0.09966687613379838,
    0.10666514582416224,
    0.10690839801842311,
    0.11439821585323147,
    0.12306810641438438,
    0.12392980727994662,
    0.1408540614658845,
    0.15281179716445356,
    0.1614029704208362,
    0.1718209472324214,
    0.18492944998962643,
    0.19174111693616214,
    0.1924469352070364,
    0.201953815915777,
    0.20309976786182543,
    0.2178176544850601,
    0.2213545989524347,
    0.22550557354900477,
    0.23089729892233193,
    0.23819719697005529,
    0.23984420754302957,
    0.2429043996153234,
    0.2437201992017493,
    0.24773906891348088,
    0.24787672203748462,
    0.25129651551005683,
    0.25236227381026965,
    0.25555897741435185,
    0.2568307873610046,
    0.2579000754060184,
    0.25991068215231194,
    0.26076078604654973,
    0.26938676930938527,
    0.27137058611500353,
    0.2714326441795975,
    0.2764167784037549,
    0.28195315820279987,
    0.2846181948125861,
    0.28494790062924125,
    0.2955654519507425,
    0.2980014993424446,
    0.30091593716696113,
    0.30212161416680083,
    0.30658886094504534,
    0.31305918674142585,
    0.317928758159428,
    0.3326659331080829,
    0.34726651130860553,
    0.3577536858416604,
    0.36040942846958357,
    0.3634475366141404,
    0.3636502832650337,
    0.37657879597026606,
    0.37814949618916843,
    0.38186803855924834,
    0.38845503635191553,
    0.3910772647246715,
    0.39400632306393685,
    0.4109357393771207,
    0.4163410915311307,
    0.41816459971235165,
    0.42252764144480326,
    0.43347380456325807,
    0.435696281748153,
    0.44301634426481185,
    0.453481768706172,
    0.46307154320261923,
    0.4691677512037378,
    0.46934557070509453,
    0.4736100446708187,
    0.4764587668478003,
    0.4914682078649019,
    0.49708883552851807,
    0.4989653008464718,
    0.5011285370045405,
    0.5098189247039806,
    0.5209596336702528,
    0.5278237946925293,
    0.5501036890701407,
    0.5551041026696315,
    0.5593579433255046,
    0.5614983229767005,
    0.5617926864659308,
    0.5655289412257961,
    0.5802908272771363,
    0.5889310183452419,
    0.6006524589952945,
    0.624822034287017,
    0.6302801026102428,
    0.6498155436414438,
    0.6711314255389402,
    0.7097413148908829,
    0.7279695179821742,
    0.7805217243317325,
    0.8095861819199952,
    1
    ], 10);