在Javascript中查找最接近所需值的数组条目

Finding array entry closest to required value, in Javascript?

本文关键字:数组 Javascript 查找 最接近      更新时间:2023-09-26

我有一个对象数组,每个对象都有一个属性"time"。数组已按时间排序。我现在想找到条目idx,这样:

  findIdx(time): return idx where idx <= time < idx+1

虽然我可以循环浏览这些条目,并在找到相应的条目后立即返回,但我担心这在我的用例中会非常繁重。用例是通过视频进行清理,因此在该操作期间,列表可能会频繁循环。

我目前的想法是创建一个越来越精确的时间树,这样我就可以通过只查询适当的范围来减少列表中的循环。

我可能想得太多了,但如果有任何见解,我将不胜感激。

正如我在评论中所说,如果对数组进行排序,则可以使用二进制搜索来降低CPU成本。

二进制搜索算法的第二个优点是,如果值不包含在数组中,您还可以知道它的索引,从而使插入(并保持数组的排序性质)变得容易。