2015-09-28 57 views
-1

我有一個數組,並需要從陣列挑三個的隨機值。這些將被放入一個新的陣列,我將能夠看到我的網站上的新陣列。我還必須確保沒有價值被挑選兩次。從陣列採摘隨機值,創造新的陣列

這是我到目前爲止有:

var student = ["Hans","Ole","Nils","Olav","Per","Knut","Line","Pia"]; 
var velg = student[Math.floor(Math.random() * student.length)]; 

我想我應該添加一個id我的HTML,所以新陣列將顯示在我的網站,但我不知道的休息。

+0

https://lodash.com/docs#sample – Ananth

回答

2

首先排序它隨機然後得到前三:

student 
    .sort(function(){ 
     return Math.random() - 0.5; 
    }) 
    .slice(0,3) 

由於的Math.random()返回0和1之間的隨機值,而排序預計值是正或負來確定順序我們,我們需要減去0.5以使這些否定成爲可能。

+0

我將我的演講後檢查出來。謝謝! :) – Geir

0

你可以嘗試這樣的事情在一個循環

var students = ["Hans","Ole","Nils","Olav","Per","Knut","Line","Pia"]; 
var randomStudents = []; 
for(var i = 0; i < 3; i++) { 
    var velg = student[Math.floor(Math.random() * students.length)]; 
    randomStudents.push(velg); 
} 

注意,這可重複的學生添加到陣列中。你應該檢查學生是否已經在陣列中,然後再試一次。

的關鍵字,這將是遞歸。

https://www.codecademy.com/courses/javascript-lesson-205/0/1

+0

這實際上看起來非常正確和合乎邏輯。我會在演講結束後檢查它是否有效。謝謝! :) – Geir

+0

然後你可以在HTML中創建一個id,以便能夠使用innerHTML,因此網站將顯示3個隨機值的數組? – Geir

+0

是的,你可以做到。但我不會做你的功課:P –