我有一个在java脚本中按升序排序的数组,其中包含以毫秒为单位的日期.
// Sample data; This may grow upto 1k or 2k
var dates = [1333391400000,1335292200000,1335810600000,1336329000000,1336933800000,1337020200000,
1337193000000,1337538600000,1337625000000,1337797800000,1338316200000,1338921000000,
1339093800000,1339439400000,1340303400000,1341772200000,1342463400000,1343068200000];
Run Code Online (Sandbox Code Playgroud)
我没有开始和结束索引.我有价值观.我需要从java脚本数组中获取2个日期(Min和Max)之间的所有日期.我从Java通过JSON获取此数组.
以下是获取最小值和最大值之间日期的方法:
function getDatesBetweenRange(min,max){
var subArray = [];
var value, jCntr=0;
for(var iCntr=0;iCntr<dates.length;iCntr++){
value = dates[iCntr];
if(value>max)
break;
if(value >=min && value <=max){
subArray[jCntr++]= value;
}
}
return subArray;
}
Run Code Online (Sandbox Code Playgroud)
由于数组按升序排序; 如果我得到的最大值超过参数中提供的最大值,我就会打破循环.
有没有其他有效的方法从Java Script数组中获取值?
这是一个看似更有效的半二进制过滤方法(至少在我的浏览器中 - Chrome,Firefox,IE9)
function filterBinary(arr,min,max){
var len = arr.length
,up = -1
,down = len
,rrange= []
,mid = Math.floor(len/2)
;
while (up++<mid && down-->mid){
if (arr[up]>=max || arr[down]<=min){break;}
if (arr[up]>=min){
rrange.push(arr[up]);
}
if (arr[down]<=max){
rrange.push(arr[down]);
}
}
return rrange;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10856 次 |
| 最近记录: |