2016-07-27 142 views
-2

我有一个函数产生一个数字,我把它推入我的数组,但生成的数字总是0,为什么?随机数总是0

function generateId() 
 
{ 
 
    var randomNum = Math.floor((Math.random()*10) + 1); 
 

 
    if(randomNum = ids.indexOf(randomNum)) 
 
    { 
 
     return generateId(); 
 
    }; 
 

 
    ids.push[randomNum]; 
 

 
    return randomNum; 
 
};

+5

应该是'如果(randomNum == ids.indexOf(randomNum))' –

+1

甚至''=== .. – Cerbrus

+1

我不明白这条线应该做什么。如果在数组中找到随机数并且该数字的位置与数字相同?它应该是'ids.indexOf(randomNum)=== -1'(或'!== -1')吗? – JJJ

回答

1

请注意,在你的代码中的错误。您在if条件下正在使用赋值运算符=,而您应该使用相等运算符==。此外,您正在使用ids.push[randomNumber],而您应该使用ids.push(randomNumber)。下面是一个工作的功能和代码片段:

function generateId() 
{ 
    if(ids.length >= 10) 
    { 
     alert("max length reached."); 
     console.log(ids); 
     return ids; 
    } 
    else 
    { 
     var randomNum = Math.floor((Math.random()*10) + 1); 
     if(ids.indexOf(randomNum) > -1) 
     { 
      return generateId(); 
     } 
     else 
     { 
     ids.push(randomNum); 
     console.log(ids); 
     } 
    } 
}; 

var ids = []; 
 

 
function generateId() 
 
{ 
 
    if(ids.length >= 10) 
 
    { 
 
     alert("max length reached."); 
 
     console.log(ids); 
 
     return ids; 
 
    } 
 
    else 
 
    { 
 
     var randomNum = Math.floor((Math.random()*10) + 1); 
 
     if(ids.indexOf(randomNum) > -1) 
 
     { 
 
      return generateId(); 
 
     } 
 
     else 
 
     { 
 
     ids.push(randomNum); 
 
     console.log(ids); 
 
     } 
 
    } 
 
};
<button id="generate" onclick="generateId()">Generate Id</button>

+0

我修复了我的错误Mohit,我现在试图在数组中搜索生成的数字是否存在,如果存在,应该生成另一个数字,然后将其添加到数组中,它应该是递归函数。谢谢你的回复tho :)。 –

+0

@GoddamnRooT谢谢。但是在你的代码片段中已经有了一个检查,我也在我的解决方案中包含了这个检查。你试过这个代码吗? –