javascript - javascript数组中范围之间的值

标签 javascript arrays

我在 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];

我没有开始和结束索引。我有值(value)观。我需要从 java 脚本数组中获取 2 个日期(最小和最大)之间的所有日期。我通过 JSON 从 Java 获取这个数组。

这里是获取最小和最大之间日期的方法:

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;
}

由于数组是升序排列的;如果我得到的最大值大于参数中提供的最大值,我将打破循环。

有没有其他有效的方法从 Java Script 数组中获取值?

最佳答案

这里有一个semi binary filter的方法,貌似more efficient (至少在我的浏览器中——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;   
}

关于javascript - javascript数组中范围之间的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11827781/

相关文章:

javascript - 如何在网络 worker 中获取图像的宽度和高度?

javascript - 如何在Draft.js中插入/上传图像(更新实体和 block )?

c++ - 如何将内存分配给大小为 10^9 的二维数组

arrays - Ruby:如何从数组内的整数中删除特定数字?

javascript - 当成员加入我的服务器时,discord.js 无法向成员添加角色

javascript - 尝试使用编码值在 Javascript 中设置 DropDown 的选定值

javascript - 组合对象数组的特定属性

javascript - 从对象数组javascript中删除元素

arrays - 如何将静态数组转换为动态数组?

javascript - 难以理解 JavaScript 编码