2017-05-11 14 views
0

Ich möchte random Strings erstellen. Aber ich bekomme keinen richtigen Weg. Kann mir bitte jemand helfen?Wie erstelle ich eine zufällige Zeichenfolge in Javascript?

mein Versuch:

var anysize = 3;//the size of string 
var charset = "abcdefghijklmnopqrstuvwxyz"; //from where to create 
console.log(Math.random(charset) * anysize); //getting bad result 

Ist es möglich, mich zu korrigieren? oder irgendeine andere elegante Art, das zu beheben?

Vielen Dank im Voraus.

+0

https://www.npmjs.com/package/randomstring – user93

+0

Es funktioniert für Sie? , @ 3gwebtrain –

Antwort

3

Sie sollten .length Eigenschaft Ihrer Zeichenfolge von möglichen Zeichen verwenden (Zeichensatz).

Verwenden Sie auch Math.floor Methode, um integer Positionen Ihrer chars Array zu erhalten.

Sie können einen Zufallsgenerator erhalten aus charset Zeichenfolge seine Array mit index:

charset[Math.floor(Math.random() * charset.length)] 

var anysize = 3;//the size of string 
 
var charset = "abcdefghijklmnopqrstuvwxyz"; //from where to create 
 
result=""; 
 
for(var i=0; i < anysize; i++) 
 
     result += charset[Math.floor(Math.random() * charset.length)]; 
 
console.log(result);

2
function randomString(anysize, charset) { 
    var res = ''; 
    while (anysize--) res += charset[Math.random() * charset.length | 0]; 
    return res; 
} 

etwas wie das

1

könnten Sie die n- erhalten Index Saibling von st Ring charset und hängen oft auf eine neue Zeichenfolge, wie Sie benötigen, finden Sie folgende bitte:

var anysize = 3;//the size of string 
 
var charset = "abcdefghijklmnopqrstuvwxyz"; //from where to create 
 
var i=0, ret=''; 
 
while(i++<anysize) 
 
    ret += charset.charAt(Math.random() * charset.length) 
 
    
 
console.log(ret);

1

Das erste, was Sie wollen tun, ist eine Hilfsfunktion erstellen, die einen Zufallswert greifen aus einem Array.

getRandomValue(array) { 
    const min = 0; // an integer 
    const max = array.length; // guaranteed to be an integer 

    /* 
    Math.random() will return a random number [0, 1) Notice here that it does not include 1 itself 
    So basically it is from 0 to .9999999999999999 

    We multiply this random number by the difference between max and min (max - min). Here our min is always 0. 
    so now we are basically getting a value from 0 to just less than array.length 
    BUT we then call Math.floor on this function which returns the given number rounded down to the nearest integer 
    So Math.floor(Math.random() * (max - min)) returns 0 to array.length - 1 
    This gives us a random index in the array 
    */ 
    const randomIndex = Math.floor(Math.random() * (max - min)) + min; 

    // then we grab the item that is located at that random index and return it 
    return array[randomIndex]; 
} 

Sie könnten diese Hilfsfunktion ohne Rücksicht verwenden, um die Länge der Zeichenfolge für die Änderung, wie folgt aus:

var randomString = getRandomValue(charset) + getRandomValue(charset) + getRandomValue(charset); 

Sie können jedoch eine andere Funktion erstellen möchten, die eine Schleife enthält, basierend darauf, wie lange wollen Sie die zufällige Zeichenfolge sein:

function getRandomString(charset, length) { 
    var result = ''; 
    for (var i = 0; i <= length; i++) { 
    result += getRandomValue(charset); 
    } 
    return result; 
} 

Und würde diese Funktion wie diese

verwendet werden

var randomString = getRandomString(charset, 3);

Verwandte Themen