2 Stimmen

Erstellen Sie einen programmierten Farbauswähler

Wie würde man einen deterministischen Javascript HTML-Farbauswähler erstellen, der anhand der gewünschten Anzahl an Farben ein Array von HTML-Hex-Farbcodes zurückgibt, also:

    function createColours(numColours) {
        return [/* Farben-Array der Größe numColours */]     
    }

Die Farben selbst können zufällig ausgewählt / generiert werden, aber die Methode muss garantieren, dass die ausgewählten Farben bei jedem Aufruf gleich sind und immer in der gleichen Reihenfolge erscheinen.

Beispiel: Wenn die Serie von Farben, die von der Funktion festgelegt wurde, mit den folgenden 8 Farben beginnt:

    "#47092E", "#CC2A43", "#00C66B", "#BC1300", "#667E00", "#795800", "#FFD245", "#6EFFAD", etc, etc

Die Funktion würde bei separaten Methodenaufrufen auf dem Client mit den folgenden konstanten Antworten reagieren:

    ["#47092E", "#CC2A43"] == createColours(2);
    ["#47092E", "#CC2A43", "#00C66B", "#BC1300", "#667E00"] == createColours(5);
    ["#47092E"] == createColours(1);        
    ["#47092E", "#CC2A43", "#00C66B", "#BC1300", "#667E00", "#795800", "#FFD245", "#6EFFAD", #und 49 weitere#] == createColours(57);     

Hinweis: Die Farben sind nicht im Voraus als Variable definiert; die Methode könnte nach 345 Farben gefragt werden, die alle auf geeignete Weise generiert werden müssten.

Das zu lösende Problem ist - in erster Linie - wie man eine Funktion innerhalb der Methode erstellen würde, um die n HEX-Farbwerte konsistent bei jedem Aufruf gleich zu generieren und dabei die Reihenfolge beizubehalten

-2voto

jqs Punkte 159

Siehe diesen Artikel. Es beschreibt, wie alle Funktionen in Javascript tatsächlich Objekte sind.

Hier ist also ein schnelles Prototyp:

function createColours(num) {
  if ( typeof createColors.colors == 'undefined' ) {
    // Wir haben noch keine Farben erstellt...
    createColors.colors = new array();
   }
  if ( createColors.colors.length >= num ) {
     // Hier neue Farben erstellen und sie zum Array hinzufügen...

  }
  // Andernfalls das Array zurückgeben...
  return createColors.colors;
}

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