javascript - javascript中数组允许哪些索引值
问题描述
今天我在探索d3-time库,借助该库我们可以创建日期轴。我在其中一个文件中遇到了这一行。谁能解释一下这条线在javascript中是如何工作的。
i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];
下面是上一行中出现的所有变量的屏幕截图。我已经调试并收集了执行此行时的所有值
谁能解释一下索引结果是什么。它实际上是在12
这里我想了解它是如何获得价值12
的。
我的意思是在使用当前数据执行上述行之后i=tickIntervals[12]
如果这不是提出此问题的正确平台,请指导将其放在哪里
解决方案
大声朗读这段代码我会说:
在这条线上,我们试图找到适合目标持续时间的刻度大小,以刻度间隔为单位,一个可能的间隔数组(秒、分钟、小时……)。
上面的二分法确定了两个持续时间,一个低于目标(i-1,持续时间 0 = tickIntervals[i-1][2]
),另一个高于目标(i,持续时间 1)。我们现在需要找到最接近我们的目标。
tickIntervals 中的持续时间越来越大。因此,比较不能线性进行(15 分钟是每分钟 15 次和每小时 1/4 次,因此使用小时刻度比使用分钟刻度更接近)。
这条线没有使用对数来测量差异,而是将 target / duration0 与 duration1 / target 进行比较,这给出了等效的结果,但计算速度更快。这说明target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target
。
如果这个比较是真的,那么我们使用下区间 ( tickIntervals[i - 1]
),否则使用上区间 ( tickIntervals[i]
)。
运算符的?:
优先级最低,因此它被评估为
(target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target) ? i - 1 : i
我希望这个阅读是正确的,并澄清了意图。
推荐阅读
- javascript - WebSocket 中的数据块是否有任何 ID,例如 lastEventId?
- javascript - 使用 pubsub 安排 firebase auth:export 到存储桶
- devops - 如何从部署组 azure devops 中读取服务器名称
- bash - 将文件数与整数 nto 进行比较 - bash 脚本
- reactjs - 反应原生,如何先滚动元素,然后是平面列表
- c++ - 将 FreeType2 与 CMake 链接
- c# - 显示第一张图片并异步加载其他图片
- python - 分组数据框的滚动平均值
- regex - 正则表达式匹配,直到找到带有或不带有引号的冒号
- python - 遍历 2 个列表并构建相对字典的有效方法