我正在编写一个程序,用于确定数字是否在数组中的两个值之间。
以下是我正在使用的数组的示例。
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 ;
}
}
}
如果有人可以查看我的代码并解释我做错了什么。
答案 0 :(得分:3)
我相信您正在尝试将数字与项目值定义的每个数字范围进行比较,其中元素0和attackArray的元素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并将其插入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]。