检查数组中的值

时间:2014-11-27 03:00:02

标签: javascript arrays

我检查数组是否在数组中的函数每次都返回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);

4 个答案:

答案 0 :(得分:3)

您的数组包含数字,prompt()返回一个字符串。您需要将字符串转换为数字,您可以使用parseInt()

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:1)

试试这个

&#13;
&#13;
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;
&#13;
&#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);