indexOf一直返回-1 Javascript

时间:2015-02-27 22:29:30

标签: javascript arrays while-loop indexof

对于我的生活我无法弄清楚为什么indexOf无法找到数组中的数字。它一直返回-1。我的目标是禁止名词并将其放入禁止数组列表中,列表必须是唯一的。因此数组中的每个元素必须不同。由于我一直得到-1,我的while循环永远不会执行。

任何人都可以向我解释我做错了什么!

if( useA < 101 && totalAs < 5){
    article1Num = 4; // A
    noun1Num = [Math.floor(Math.random() * 5)];  
//^^^ random number to try use

//-------- 
    // Code to check if number is ban
    alert("Test Noun1Num is " + noun1Num);
    alert(bannedNounsTest.indexOf(noun1Num));   
//^^^^ITS ALWAYS -1 !!!!!!! EVEN if there is a match!
    while (bannedNounsTest.indexOf(parseInt(noun1Num)) >= 0 ) {   
// ^^^searching the value of the current noun in ban, -1 if none
        alert("In Loop and noun1Num is " + noun1Num);
        noun1Num = [Math.floor(Math.random() * 5)];  
// ^^looking for new number not in index while
    }

//----------

bannedNounsTest.push(noun1Num); // put in ban list
    totalAs++;

1 个答案:

答案 0 :(得分:1)

它给出-1,因为indexOf在找不到匹配时返回。 (它不能,因为你正在搜索匹配的数组与数字)

你想要的是......

noun1Num = Math.floor(Math.random() * 5);