【发布时间】:2018-05-18 00:04:21
【问题描述】:
我有一个值数组,特别是某种元素的像素偏移量。
假设它们位于数组arrScroll[] 中,值为[5, 10, 15, 50, 100, 250]。
如果我的窗口滚动超过 5 像素但没有超过 10 像素,我得到索引 0。如果我的窗口滚动超过 15 像素但没有超过 50 像素,我得到索引 2。如果它回滚到 10 像素以下但没有低于 5,我又得到索引 0。
我正在尝试做的是找到一种优雅的方式(而不是每个可能范围的大量条件,因为范围的数量可以改变)始终获得滚动范围的两个索引中的较低者我在,除了在 0 到 arrScroll[0] 的范围内,在这种情况下,我传递的值与索引不同。
另一个例子:如果我在arrScroll[3]和arrScroll[4]的范围内,那么我将获得索引3。只有通过更高索引号的位置,我才能获得它的索引。
这与排序无关,因为值已经从小到大排序。在滚动事件侦听器上,我只想获取组成索引的两个值中较低者的索引。
最好的组织方式是什么,以便它可以用于任意长度的数组?
更完整的例子:
我有红色、蓝色和绿色。我有一个值[100, 200, 300] 的数组。当我的窗口滚动超过 100 像素但不超过 200 像素时,我将看到类似 $(element).css('background-color', colorArr[index]) 的内容,其中索引 0 处的 colorArr[] 中的颜色为红色。
然后,如果窗口滚动超过 200,但不超过 300,我运行相同的代码 sn-p,但索引现在为 1,颜色为蓝色。
如果我向后滚动到 200 像素以下但不低于 100 像素,则索引再次为 0,传递的颜色为红色。
如果数组的长度已知,则使用 if 语句创建是微不足道的,但我不知道如何为任意长度的数组创建。
【问题讨论】:
-
您想要较低的索引,还是该索引处的较低值?
-
@Taplar 没关系,只要我有较低的索引,我就可以从数组中提取值。
-
@ThomasEdwards 这与排序无关,因为值已经排序。
-
这实际上没有意义,因为数组已经排序,较小的索引总是获胜。
标签: javascript jquery