2016-07-12 21 views
-3

Ich habe ein Array mit 4 Farben.Holen Sie ein Element eines Arrays nur einmal

EX:

var c1 = getColor(); 
var c2 = getColor(); 
var c3 = getColor(); 
var c4 = getColor(); 

function geraColor() 
{ 
    var colors = ['#3498db', '#8e44ad', '#e67e22', '#1abc9c']; 
    //Return each value only once 
} 

Ich habe eine Liste der Lehrer, jeder Lehrer eine Unterliste mit seinen Disziplinen hat.
So: Professor and Disciplines

Jedes Mal, wenn ich auf einem Professor Klicken Sie, jedes Mal wenn ich auf den Namen des Professors klicken, ich diese Disziplinen in meinem Kalender hinzufügen (alreay Fertig).

Was ich brauche mit Hilfe ist: Ich muss eine eindeutige Farbe (zufällig oder nicht) zu jedem Professor ich klicken/erweitern.

Obs: Ich habe eine Grenze von 4 Professoren, also muss ich nur 4 Farben erzeugen.
Obs2: Jedes Mal klicke ich wieder auf einen Professor, schließe seine Disziplinen. Ich muss die Farbe wieder verwenden, die er wieder verwendet hat.

+0

** Ich möchte IMMER immer ein Element nur einmal bekommen. ** Ist es die Anforderung? – brk

+0

Ich kann nicht die gleiche Farbe zu verschiedenen Professor bekommen. Aber sobald ich seine Disziplinen schließe, muss diese Farbe wieder verfügbar sein. (Ich möchte um einen Kommentar bitten, der den Downvote erklärt). – PlayHardGoPro

+1

Wie wäre es, wenn Sie einfach Ihr 'colors' Array im globalen Geltungsbereich setzen und' pickedColor = colors.pop() '/' colors.push (releasedColor) '' verwenden? – Arnauld

Antwort

0

verwalten Nur einen Dictionnary remembrering Professors Farbe:

var profColors = {}; 
 

 
function getColor(profName){ //profId would be better 
 
    if (!profColors[profName]) 
 
    profColors[profName] = getRandomColor(); // or nor random... 
 
    
 
    return profColors[profName]; 
 
}

jedoch nicht sicher, ob ich verstehe, was Sie erreichen wollen ...

+0

Wie Google Kalender, aber die Disziplinen, die ich in den Kalender (Ereignisse) einfügen, muss die gleiche Farbe für jeden Professor sein. Mit einer maximalen Anzahl von 4 Professoren auf einmal, also 4 Farben gleichzeitig. – PlayHardGoPro

+0

Hilft mein Code? –

1

AFA ich Ihre Frage verstanden, vielleicht das möchten Sie erreichen:

var colors = ["red", "green", "yellow", "orange", "blue", "pink"]; 
 
var defaultColor = "black"; 
 

 
function getRndColor() { 
 
    var size = colors.length; 
 
    var rnd = Math.floor(Math.random() * size); 
 
    return colors.splice(rnd, 1)[0]; 
 
} 
 

 
function getColor(elem) { 
 
    var color = defaultColor; 
 
    if (elem.checked) { 
 
    color = getRndColor(); 
 
    } else { 
 
    colors.push(elem.parentElement.style.color); 
 
    } 
 
    elem.parentElement.style.color = color; 
 
    console.log(colors); 
 
}
<span><input type="checkbox" onclick="getColor(this)"/>Get Random Color</span> 
 

 
<span><input type="checkbox" onclick="getColor(this)"/>Get Random Color</span> 
 
<br/> 
 
<span><input type="checkbox" onclick="getColor(this)"/>Get Random Color</span> 
 

 
<span><input type="checkbox" onclick="getColor(this)"/>Get Random Color</span> 
 
<br/>

Verwandte Themen