我检查数组是否在数组中的函数每次都返回false,即使它应该为真。
当我将var值更改为时,让我们说20,并且我运行页面直到20出现在数组中,它会工作并返回true。但是,当值是提示符,并且我输入数组中出现的数字时,我总是得到错误。
function checkIfInArray(n, anArray) {
return anArray.indexOf(n) > -1;
}
var array = new Array();
for (var i = 0; i < 10; i++) {
array[i] = Math.floor(Math.random() * 101);
}
alert("The array is " + array);
var value = prompt("Enter a value to check if it is in the array");
var result = checkIfInArray(value, array);
alert(result);
答案 0 :(得分:3)
您的数组包含数字,prompt()
返回一个字符串。您需要将字符串转换为数字,您可以使用parseInt()
。
function checkIfInArray(n,anArray) {
return anArray.indexOf(n) > -1;
}
var array=new Array();
for (var i = 0; i < 10; i++)
{
array[i] = Math.floor(Math.random()*101);
}
alert("The array is " + array);
var value=parseInt(prompt("Enter a value to check if it is in the array"), 10);
var result=checkIfInArray(value,array);
alert(result);
&#13;
答案 1 :(得分:1)
试试这个
function checkIfInArray(n,anArray) {
return anArray.indexOf(parseInt(n)) > -1; // parse int . here was the problem
}
var array=new Array();
for (var i = 0; i < 10; i++)
{
array[i] = Math.floor(Math.random()*101);
}
alert("The array is " + array);
var value=prompt("Enter a value to check if it is in the array");
var result=checkIfInArray(value,array);
alert(result);
&#13;
答案 2 :(得分:0)
您遇到类型问题,提示结果是字符串而不是 int ,indexOf
方法使用严格模式来比较元素,所以在调用indexOf
之前,您应该强制将值转换为int:
return anArray.indexOf(parseInt(n)) > -1;
*请注意,IE8不支持Array.indexOf
答案 3 :(得分:0)
您可能会收到该错误,因为提示符正在发送字符串而不是数字。尝试使用parseInt()
将字符串转换为整数以测试值。
你可以做任何一件事
var value = parseInt(prompt("Enter a value to check if it is in the array"));
或
var result = checkIfInArray(parseInt(value), array);