मुझे लगता है कि यादृच्छिक रंग उत्पन्न करने से रंग पैदा होते हैं जो मेरे स्वाद के लिए पर्याप्त विपरीत नहीं होते हैं। सबसे आसान तरीका है कि मैं चारों ओर मिल रहा है कि बहुत अलग रंगों की एक सूची को पूर्व-आबाद करना है। प्रत्येक नए स्ट्रिंग के लिए, सूची में अगला रंग असाइन करें:
// Takes any string and converts it into a #RRGGBB color.
var StringToColor = (function(){
var instance = null;
return {
next: function stringToColor(str) {
if(instance === null) {
instance = {};
instance.stringToColorHash = {};
instance.nextVeryDifferntColorIdx = 0;
instance.veryDifferentColors = ["#000000","#00FF00","#0000FF","#FF0000","#01FFFE","#FFA6FE","#FFDB66","#006401","#010067","#95003A","#007DB5","#FF00F6","#FFEEE8","#774D00","#90FB92","#0076FF","#D5FF00","#FF937E","#6A826C","#FF029D","#FE8900","#7A4782","#7E2DD2","#85A900","#FF0056","#A42400","#00AE7E","#683D3B","#BDC6FF","#263400","#BDD393","#00B917","#9E008E","#001544","#C28C9F","#FF74A3","#01D0FF","#004754","#E56FFE","#788231","#0E4CA1","#91D0CB","#BE9970","#968AE8","#BB8800","#43002C","#DEFF74","#00FFC6","#FFE502","#620E00","#008F9C","#98FF52","#7544B1","#B500FF","#00FF78","#FF6E41","#005F39","#6B6882","#5FAD4E","#A75740","#A5FFD2","#FFB167","#009BFF","#E85EBE"];
}
if(!instance.stringToColorHash[str])
instance.stringToColorHash[str] = instance.veryDifferentColors[instance.nextVeryDifferntColorIdx++];
return instance.stringToColorHash[str];
}
}
})();
// Get a new color for each string
StringToColor.next("get first color");
StringToColor.next("get second color");
// Will return the same color as the first time
StringToColor.next("get first color");
हालांकि इसकी सीमा केवल 64 रंगों की है, फिर भी मुझे लगता है कि अधिकांश मनुष्य वास्तव में उसके बाद के अंतर को नहीं बता सकते। मुझे लगता है कि आप हमेशा अधिक रंग जोड़ सकते हैं।
जबकि यह कोड हार्ड-कोडेड रंगों का उपयोग करता है, आपको कम से कम विकास के दौरान यह जानने की गारंटी है कि आप उत्पादन में रंगों के बीच कितना विपरीत देखेंगे।
इस एसओ उत्तर से रंग सूची को हटा दिया गया है , अधिक रंगों के साथ अन्य सूची हैं।