javascript - 检查数组中的值是否在范围内

标签 javascript jquery

我需要检查我拥有的数组是否在特定范围内。

我有一个数组:

var times = [79, 118, 145, 245, 688, 833, 934, 956, 1019, -339, -324, -265, 65, 81, 83, 121, 151, 154, 359]

并且想要获取落在这些范围内的值的计数:

var ranges = ['0-10', '11-20', '21-30', '31-40', '41-50', '51-60', '61 +'];

这是我到目前为止的代码..

$.each(times, function (i, datum) 
{
    if (datum <= 0) 
        sum1 += 1;
    else if (datum > 10 && datum <= 20) 
        sum2 += 1;
    else if (datum > 20 && datum <= 30)
        sum3 += 1;
    else if (datum > 30 && datum <= 40)
        sum4 += 1;
    else if (datum > 40 && datum <= 50)
        sum5 += 1;
    else if (datum > 50 && datum <= 60)
        sum6 += 1;
    else if (datum > 60)
        sum7 += 1;
}

我如何获得范围和总和的对象。例如{“0-10”:2、“11-20”:19、“21-30”:45}

最佳答案

var times = [79, 118, 145, 245, 688, 833, 934, 956, 1019, -339, -324, -265, 65, 81, 83, 121, 151, 154, 359];

var ranges = ['0-10', '11-20', '21-30', '31-40', '41-50', '51-60', '61 +'];

function getObj(range){
    var obj={};
    range=range.replace("+","-Infinity");
    var arr=range.split("-");
    return {sum:0,min:Number(arr[0]),max:Number(arr[1])};
}

var sums={};
for(var i=0;i<ranges.length;i++) sums[ranges[i]]=getObj(ranges[i]);
for(var i=0;i<times.length;i++){
    for(var j=0;j<ranges.length;j++){
        var sum=sums[ranges[j]];
        if(times[i]>=sum.min && times[i] <= sum.max){sum.sum+=1}
    }
}
console.log(sums)

完整 fiddle :http://jsfiddle.net/6RRyL/1/

关于javascript - 检查数组中的值是否在范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23795232/

相关文章:

javascript - 相同的子任务在 Angular 甘特图中显示为里程碑

javascript - 需要 Node 编译脚本中的普通 javascript 文件吗?

javascript - 输入范围使水平线上的小垂直线

javascript - 如何将html5 Canvas 保存到服务器

javascript - 使用 Javascript 隐藏 Android WebView 中的元素

jquery - 如何正确使用 jQuery DataTables 和 Doctrine 分页器?

javascript - Bootstrap 导航栏切换按钮不起作用

javascript - 复制要在模式框中显示的父元素

jquery - 图像未正确调整大小 - JQuery Backstretch

Javascript 已加载但在 WordPress 中未触发