gpt4 book ai didi

javascript - 如何根据 Javascript 中的动态范围确定值

转载 作者:行者123 更新时间:2023-11-28 08:19:44 25 4
gpt4 key购买 nike

是否有一种聪明的方法来确定数组索引是否在给定范围内?该应用程序类似于单个视频文件的播放列表,具有一组表示“章节”的开始/结束时间。
即章节:

00:01 - 00:30 : Call To Order
00:31 - 00:45 : Pledge of Allegence
00:46 - 02:25 : Opening Remarks
02:26 - 32:07 : Old Business
etc., etc., etc.

我在页面上有一个这些项目的列表,并且当播放器通过返回当前时间戳来报告当前在视频中播放的位置时,我需要使用 jQuery 突出显示“章节”的 LI,其中目前视频时间戳下降。因此,如果视频当前为 1:15,则为“开场白”,并且第三个列表项将突出显示。

我尝试了多种方法,但最终使用 PHP 编写了大量的 IF/ELSE,因为播放列表中可能包含 5 到 100 个不同的章节,并且用户可以随时修改。

理想情况下,我想要一个使用开始时间作为键和章节作为值的数组,以及一个返回>=当前时间戳的第一个索引的函数。有什么聪明的方法可以实现这一点吗?我的方法“有效”,但天哪,它的效率很低,每秒运行 100 个 if/else 10 次。

附注我应该提到的是,所有值实际上都以秒为单位,为了清楚起见,问题使用 H:M:S。最终,我试图了解如何选择落在给定范围内的数组索引。

最佳答案

类似这样的事情:

var chapters = {
1: "callToOrder",
31: "pledgeOfAllegiance",
46: "openingRemarks",
146: "oldBusiness",
}

function currentChapter(seconds) {
var start, found = Infinity;
for (start in chapters) {
if (start <= seconds && start < found) {
found = start;
}
}
return (found === Infinity) ? null : chapters[found];
}

它将在章节数的线性时间内运行。实际上,这应该是可以接受的。如果不是,那么您可以将 chapters 替换为对象数组并执行二分搜索。

关于javascript - 如何根据 Javascript 中的动态范围确定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23134897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com