Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从起始值到结束值获取排序数组的一部分_Javascript - Fatal编程技术网

Javascript 从起始值到结束值获取排序数组的一部分

Javascript 从起始值到结束值获取排序数组的一部分,javascript,Javascript,我对javascript非常陌生,需要通过start_值和end_值获取排序数组(基本上是数字、时间戳)的一部分(切片) 例如,假设我有一个上个月的随机时间戳数组,我想得到两周前和一周前之间的所有时间戳。 这是一个非常简单的算法编写(使用二进制搜索),但我不想把我的代码与这些计算弄乱。 我一直在寻找用javascript实现这一点的方法,但没有找到任何方法 感谢以后的帮助:)也许可以使用过滤器 var日期=[123234456678]; var最小值=300; var max=500; var

我对javascript非常陌生,需要通过start_值和end_值获取排序数组(基本上是数字、时间戳)的一部分(切片)

例如,假设我有一个上个月的随机时间戳数组,我想得到两周前和一周前之间的所有时间戳。 这是一个非常简单的算法编写(使用二进制搜索),但我不想把我的代码与这些计算弄乱。 我一直在寻找用javascript实现这一点的方法,但没有找到任何方法


感谢以后的帮助:)

也许可以使用
过滤器

var日期=[123234456678];
var最小值=300;
var max=500;
var inRange=dates.filter(函数(日期){
返回最小值<日期和日期<最大值;
});

控制台日志(inRange)好的,我找到了一个名为binarysearch的纯js库,它完全符合我要查找的内容:。它具有rangeValue函数,该函数接受不存在的数字作为起点和终点。似乎正在工作:)

您尝试了什么吗?如果已排序,您可以使用
indexOf()
查找开始索引和结束索引,然后用它们调用
slice()
。您甚至可以在返回的开始索引后的1处搜索结束索引,以加快搜索速度。@skyline3000使用
indexOf
假设数组中的
start\u值
end\u值
完全匹配。对于给定的日期示例,可能没有“一周前”的确切时间的时间戳。如果您想继续查找索引,可以使用
findIndex
,但这仍然不是二进制搜索,IE不支持。是的,indexOf不是我需要的,因为它需要精确匹配。顺便说一句,我忘了提到我正在使用es6,所以可能会有什么问题吗?谢谢你的回复。数组可能相当大,而且它是一个UI组件,所以在O(log-n)上做O(n)不是一个真正的选项。我们说的是多大?@OrelCohen OK,10M听起来足以让使用
过滤器变得不切实际。一般来说,我不希望UI一开始就拥有所有10M的内存。即使内存使用不是一个问题,服务器和UI之间的数据传输也可能慢得令人无法接受。一旦你做了一个“一周”的切片,你对它执行的操作可能也会太慢。如果这一切都不是问题,那么我认为您确实需要进行二进制搜索。如果您找不到您信任的第三方库,那么您可以证明编写代码是合理的,因为您有极端的性能要求。