【问题标题】:Add all array values before specific array value with Javascript使用 Javascript 在特定数组值之前添加所有数组值
【发布时间】:2015-08-25 15:41:16
【问题描述】:

在我的软件中,我有一个展开查看器,可以将页面彼此相邻对齐。页数可以变化。用户可以在这些页面上放置注释。我希望能够通过将 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) {

}

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

【问题讨论】:

  • 这听起来像是 X-Y 问题。如何创建这些页面或设置宽度?那时肯定可以为它们添加标识符吗?

标签: javascript jquery arrays loops for-loop


【解决方案1】:

保持你目前看到的宽度总和,当宽度超过xbreak

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;
  }
}

【讨论】:

    猜你喜欢
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多