将数组中的值与javascript中的数字进行比较

时间:2013-09-11 00:46:59

标签: javascript arrays

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

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

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

 }

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

3 个答案:

答案 0 :(得分:3)

我相信您正在尝试将数字与项目值定义的每个数字范围进行比较,其中元素0和attackArray的元素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]attackArray[1][count]。这将允许您正确地将您的数字与元素0中的每个项目和元素1中相同索引的项目进行比较。

  4. 以下代码应该是一个简洁,正确的工作代码,以实现您的目标。您可以将其插入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);
    

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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