2016-07-27 6 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 Спасибо. Но в этом фрагменте кода уже есть чек, который я также включил в свое решение. Вы пробовали этот код? –

Смежные вопросы