Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
            
                    
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        5年前关闭。
                    
                
        

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

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

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

 }


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

最佳答案

我相信您正在尝试将数字与项目值所定义的每个数字范围进行比较,并在AttackArray的元素0和元素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");或可以使用如下所示的不同数组语法。
在该函数中,您使用了AttackArray var attack = attackArray.length;的长度来控制随后的for循环。相反,只要var attack = attackArray[0].length;attackArray[0]的长度相同,就需要attackArray[1]。您可以这样想,因为长度不正确。您得到的长度是“向下”排列数组或对象列表,而不是“跨越”阵列的水平暗淡。
在函数中,您对如何循环遍历数组感到困惑,并且此attackArray [count][0]attackArray [count][1]向后。相反,它们应该是attackArray[0][count]attackArray[1][count]。这将使您能够正确地将数字与元素0中的每个项目以及元素1中具有相同索引的项目进行比较。


以下代码应该是简洁,正确的代码段,以实现您的目标。您可以将其插入jsfiddle.net并将其插入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);

关于javascript - 比较数组中的值和javascript中的数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18730995/

10-12 05:31