572 Stimmen

Zufallsgenerator für Farben

Angesichts dieser Funktion möchte ich die Farbe mit einem Zufallsfarbgenerator.

document.overlay = GPolyline.fromEncoded({
    color: "#0000FF",
    weight: 10,
    points: encoded_points,
    zoomFactor: 32,
    levels: encoded_levels,
    numLevels: 4
});

Wie kann ich das tun?

3voto

Prostakov Punkte 880

Meine Version:

function RandomColor() {
  var hex = (Math.round(Math.random()*0xffffff)).toString(16);
  while (hex.length < 6) hex = "0" + hex;
  return hex;
}

3voto

alexmagnus Punkte 926

Ein etwas erweiterter Einzeiler, um den Ansatz anschaulicher zu machen

'#' + Math.round((0x1000000 + 0xffffff * Math.random())).toString(16).slice(1)

3voto

Ravi Makwana Punkte 2204

Sie sollten Folgendes verwenden '#'+Math.floor(Math.random()*16777215).toString(16); für einen zufälligen Farbcode.

Ihr Denken, aber warum 16777215 ? Lesen Sie diesen Artikel: _Erzeugen Sie eine zufällige Farbe mit einer einzigen Zeile JavaScript-Code_

function generateRandomColor()
{
    var randomColor = '#'+Math.floor(Math.random()*16777215).toString(16);
    if(randomColor.length != 7){ // In any case, the color code is invalid
        randomColor = generateRandomColor();
    }
    return randomColor;
    // The random color will be freshly served
}
document.body.style.backgroundColor = generateRandomColor() // -> #E1AC94

2voto

Larry Battle Punkte 8642

Hier sind meine beiden Versionen für einen Zufallsgenerator für Hexadezimalcodes.

/* Slowest but shortest. */
"#000000".replace(/0/g,function(){return (~~(Math.random()*16)).toString(16);});    

/* Good performance with small size. */
"#"+(function(a,b){while(a--){b+=""+(~~(Math.random()*16)).toString(16);} return b;})(6,"");

/* Remy Sharp provided one that's the fastest but a little bit too long */
(function(h){return '#000000'.substr(0,7-h.length)+h})((~~(Math.random()*(1<<24))).toString(16))

2voto

Alexander Rice Punkte 140

使用方法 ES6 Methode Array.from() habe ich diese Lösung erstellt:

function randomColor() {
  return "#"+ Array.from({length: 6},()=> Math.floor(Math.random()*16).toString(16)).join("");
}

Die anderen Implementierungen, die ich gesehen habe, müssen sicherstellen, dass die Zahl immer noch sechs Ziffern enthält, wenn der Hexadezimalwert führende Nullen hat.

In der Antwort von K._ wurde hierfür der padStart von ES6 verwendet:

function randomColor() {
  return `#${Math.floor(Math.random() * 0x1000000).toString(16).padStart(6, 0)}`
}

Die andere gute einzeilige Lösung, die ich gesehen habe, ist

function randomColor() {
  return '#'+ ('000000' + (Math.random()*0xFFFFFF<<0).toString(16)).slice(-6);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X