2017-01-16 3 views
0

Ich weiß, dass es viele ähnliche Fragen gab und ich ging durch die meisten von ihnen. Der Code, der dem am nächsten kommt, was ich erreichen möchte, ist this one. Ich habe eine Liste von Personen in jeder Spalte (die einen Tag darstellen). Für diese Frage nehmen wir an, es sind 8 Personen in jeder Spalte. Ich muss 5 zufällige Personennamen zufällig auswählen. Ich habe splice() verwendet, um das ausgewählte Element aus dem Array zu löschen, um sicherzustellen, dass es nicht zweimal ausgewählt wird. Ich bin neu in der Codierung und ich denke, dass ich einen grundlegenden Fehler mache, da der Spleiß für die erste Schleife funktioniert und dann geht das Array zurück zu dem ursprünglichen. Können Sie mir bitte helfen, meinen Fehler zu erkennen?Nach dem Zufallsprinzip einzigartige Artikel aus einem Array mit Javascript

for (var x = 0; x < 5; x++) { 
var sourceArray = ss.getRange(49,j+5,8,1).getValues(); 
var gg = Math.floor(Math.random()*sourceArray.length); 
var pickedHLA = sourceArray[gg]; 
sourceArray.splice(gg, 1); 
var HLAselect = ss.getRange(30+x,j+5,1,1) 
HLAselect.setValue(pickedHLA); 

Antwort

0

In Ihrem for Schleifen Sie neu definieren die sourceArray während jeder Iteration - Sie diese außerhalb der Schleife definieren müssen, dann tun Sie Ihre Arbeit aus dem Array nach dem Zufallsprinzip auszuwählen und zu entfernen:

var sourceArray = ss.getRange(49,j+5,8,1).getValues(); //establish full list of people 

for (var x = 0; x < 5; x++) { 
    var gg = Math.floor(Math.random()*sourceArray.length); //get random index 
    var pickedHLA = sourceArray[gg]; //get random person via random index 
    sourceArray.splice(gg, 1); //remove random person from full list of people 
    var HLAselect = ss.getRange(30+x,j+5,1,1) 
    HLAselect.setValue(pickedHLA); 
} 
+0

'sourceArray.length - 0.1' falls 'random' zurückgegeben' 1' –

+1

Vielen Dank! Das hat funktioniert. – Sati

0

Der So können Sie dies tun, ist eigentlich ganz einfach, alles was man ein paar Zeilen Code benötigt:

var arr = ["Cheese", "Purple", "List", "1", "2", "3", "4", "5"]; 
 
function random() { 
 
    var randomNumber1 = parseInt(Math.random() * arr.length); 
 
    var random = arr[randomNumber1]; 
 
    alert(random); 
 
}
<button onClick="random()">Click Me</button>

Los geht's!

Verwandte Themen