0

我正在编写一个程序来确定一个数字是否介于数组中的两个值之间。

这是我正在使用的数组的示例。

var attackArray = new Array (2);
attackArray[0] = new Array("0","1","2","2","2","3","4");
attackArray[1] = new Array("2","3","2","3","2","3","4");

我正在使用以下代码将数字与数组中的前两个值进行比较。然后我循环遍历数组,直到找到符合要求的行。该数字必须 >= 到第一个数字并且 <= 第二个数字。

这是我正在使用的代码。

function leveltest ( number)
{
    var attack = attackArray.length;


    for ( var count = 0 ; count < attack; count ++)
   {
      if ((number >= Number(attackArray [count][0])) && (number <= Number(attackArray [count][1])))
      {
        do something ;
      }
   }  

 }

如果有人可以查看我的代码并解释我做错了什么。

4

3 回答 3

3

我相信您正在尝试将一个数字与由在元素 0 和元素 1 的攻击数组中具有相同索引的项目值定义的每个数字范围进行比较。如果这是正确的,那么以下适用。

您的代码片段中存在的问题是:

  1. 您在第 3 行的索引错误。您的第三行attackArray[2] = new Array("1","3","2","3","2","3","4");是在第一行创建的 attackArray 中创建新的第三个元素。相反,我认为您想要填充attackArray 的第二个元素,它应该是attackArray[1] = new Array("1","3","2","3","2","3","4");或者您可以使用不同的数组语法,如下所示。

  2. 在函数中,您使用 attackArray 的长度var attack = attackArray.length;来控制for循环跟踪。相反,你会想要,var attack = attackArray[0].length;只要attackArray[0]attackArray[1]是相同的长度。你可以这样想,你的长度沿着你的数组的错误维度。你得到的长度“向下”你的数组或对象列表,而不是“跨越”你的数组的水平暗淡。

  3. 在函数中,您对如何遍历数组感到困惑,并且您有这个attackArray [count][0]attackArray [count][1]倒退。相反,它们应该是attackArray[0][count]and attackArray[1][count]。这将允许您正确地将您的数字与元素 0 中的每个项目以及元素 1 中具有相同索引的项目进行比较。

以下代码应该是一个简洁、正确的工作代码,以实现您的目标。您可以将其插入 jsfiddle.net,它应该可以在 Chrome 中使用 Javascript 控制台来查看日志中的结果。这里是:

var attackArray = [];
attackArray[0] = ["0","0","2","2","2","3","4"];
attackArray[1] = ["1","3","2","3","2","3","4"];

function leveltest (number){
  var attack = attackArray[0].length;
  for (var count = 0;count < attack;count ++){
    if ((number >= Number(attackArray [0][count])) &&
        (number <= Number(attackArray [1][count]))) {
      console.log(number + " matches at index " + count);
      }
    }  
}
leveltest(2);
于 2013-09-11T02:27:10.837 回答
0

看起来你在 attackArray 中的第二个元素有错误的索引。

attackArray[2] = new Array("1","3","2","3","2","3","4");

attackArray.length == 2 你“计数”可以达到 1,attackArray[1] 不是你定义的。

于 2013-09-11T00:53:29.493 回答
0

if 中的第二个比较是错误的。在第二个循环中,它将是 attackArray[1][1],您创建了一个 attackArray[0] 和 attackArray[2]。

于 2013-09-11T00:53:32.483 回答