2017-07-03 60 views
1

我做了一個JavaScript「而」循環繼續增加從1隨機數到10所述的數組,直到隨機數是9或10如何讓JavaScript'while'循環更優雅?

function random() { 
    return Math.floor(Math.random() * (10)) + 1; 
} 

var array = []; 
var element = 0; 
while (element < 9) { 
    element = random(); 
    if (element < 9) { 
     array.push(element); 
    } 
} 
console.log(array); 

我有兩個問題。

  1. 我怎樣才能讓「而」循環更優雅 - 不使用(元素< 9)兩次?

  2. 如何在不使用'while'循環的情況下以更優雅的方式執行此操作?

+4

你肯定想要一個'while'循環,因爲你正在做某件事,而條件成立。嘗試'while((element = random())<9)array.push(element);'。 –

+0

@Santi他們在循環內生成一個新的隨機數,所以它需要這個特定的算法 – Li357

+0

@AndrewLi我注意到這一點,並刪除了我的評論,但我想我會重新命令'random()'和'。 push',將'element'初始化爲'random()'而不是'0'。 **編輯:**似乎cᴏʟᴅsᴘᴇᴇᴅ建議與我一樣,儘管尼采的答案可能是最好的。 – Santi

回答

2

要回答你的第一個問題,你可以初始化element一個隨機值開始:

var element = random(); 
while (element < 9) { 
    array.push(element); 
    element = random(); 
} 

這擺脫了內if的。

要回答你的第二個問題,它並沒有比這更真實。如果你真的想使用別的東西,你可以通過改變你的代碼來使用do-while,但實際上它是一回事。


一個更好的這種替代(我的信​​用@NiettheDarkAbsol),是執行任務,並在一個步驟檢查:

while ((var element = random()) < 9) { 
    array.push(element); 
} 

您不再需要外連聲明它,或致電random()在多個地方。