碰到一个需要给图表上数据打颜色的场景,我希望对于同一个名字的数据每次出来的颜色都是一样的,于是想了半分钟,搞出了这么个方案
function strToRGB(name){ let sum=0; for(let s of name)sum+=s.codePointAt(0); return [sum%128,sum%126,sum%124]; }
原理是把每一个字符的unicode值累加起来,然后对这个和分别取3个余数。
除数选1到256都可以,选多少取决于希望结果出现在哪个范围,我这里为了让结果颜色偏暗,所以选了128左右的除数。