2015-09-28 71 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 –