我需要检查我拥有的数组是否在特定范围内。
我有一个数组:
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/