如何在Javascript中基于动态范围确定值
How to determine a value based on dynamic ranges in Javascript
有没有一种聪明的方法来确定(比如数组索引)是否在给定范围内?该应用程序类似于单个视频文件的播放列表,其中包含一组表示"章节"的从/到时间
即章节:
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个不同的章节,用户可以随时修改。
理想情况下,我想要一个数组,使用Start time作为Key,使用chamber作为值,以及一个返回第一个索引的函数,该索引>=当前时间戳。有什么聪明的方法可以做到这一点吗?我的方式"有效",但天哪,它效率低下,每秒运行100次。
附言:我应该提到,所有的值实际上都是以秒为单位的,为了清楚起见,这个问题使用了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
,并执行二进制搜索。
相关文章:
- HTML范围:动态设置值属性
- 动态加载angularjs并生成控制器和范围
- 如何从范围滑块动态值计算输入值
- 根据角度范围值动态更改分页页面大小
- 我可以设置这个吗'某事'在该服务中动态创建的嵌套对象中的服务?(可能是范围问题)
- HTML5:如何创建一个“;范围输入类型“;具有动态值
- 打印从 HTTP RFEquest 动态更新的页面范围
- 显示已动态添加的范围
- 如何动态更新仪表(高图表)内的范围
- JavaScript 动态对象范围
- 动态创建/限制随机时间的范围并转换为时间戳
- 从 mysql 获取行集,并使用 php 和 Codeigniter 中的 jquery 生成动态范围选择器框
- 流星:发布动态请求的项目范围
- 动态创建的输入字段上的日期范围选取器
- JavaScript 中的动态点击变量范围
- 角度 - 动态构建范围
- 基础范围滑块输入不会动态更改滑块
- 如何在动态范围的元素上添加一个类
- 如何在Javascript中基于动态范围确定值
- 通过动态范围:谷歌脚本