使用Javascript在特定数组值之前添加所有数组值

时间:2015-08-25 15:41:16

标签: javascript jquery arrays loops for-loop

在我的软件中,我有一个扩展查看器,可以将页面彼此对齐。页数可以变化。用户可以在这些页面上放置注释。我希望能够通过将x坐标与页面宽度的总和进行比较来确定添加注释的页面。

对于这个例子,假设我有4页的传播。我构建了一个具有以下值的js数组widthArr[][297, 300, 305, 410]

当然,以下是真的

widthArr[0] = 297 //page 1 width
widthArr[1] = 300 //page 2 width
widthArr[2] = 305 //page 3 width
widthArr[3] = 410 //page 4 width

因此,如果x坐标为400,那么我将知道该笔记正放在第2页上。

有没有办法可以动态循环浏览这些页面并以某种方式检查x是否大于以前所有页面宽度的宽度?

我需要在这个特定场景中检查以下内容:

x > (widthArr[0] + widthArr[1] + widthArr[2])?然后,用户正在向第4页添加注释。

x > (widthArr[0] + widthArr[1])?然后用户正在向第3页添加注释。

x > widthArr[0]?然后用户正在向第2页添加注释。如果没有,则用户正在向第1页添加注释。

我开始使用以下for循环。

var spreadPagesLength = 4;
var x = 400;
var i;
for (i = 0; i < spreadPagesLength; ++i) {

}

感谢任何帮助。非常感谢。

1 个答案:

答案 0 :(得分:2)

保持目前为止看到的总宽度,以及宽度超过break时的x

var widthArr = [297, 300, 305, 410];
var page = widthArr.length + 1;   // after the last page, as a default
var x = 400;
var totalWidth = 0;

for ( var i = 0; i < widthArr.length; ++i )
{
  totalWidth += widthArr[i];

  if (x < totalWidth)
  {
    page = i + 1;
    break;
  }
}