dar*_*ten 0 javascript string algorithm colors
我想使用 JavaScript 根据人名从预定义的颜色列表中选择一种颜色。
我想要一个彩色圆圈,中间是人名的第一个字母。期望的效果很像谷歌对那些在收件箱或联系人等应用程序中没有与其帐户关联的图片的用户所做的事情。
我希望返回的名称颜色始终与名称颜色相同,因此不可能使用随机数。
我不想生成 #000000 和 #FFFFFF 之间的十六进制颜色,因为我想控制调色板,并且想要限制颜色的数量,所以这个问题的答案是不够的。
有任何想法吗?
小智 5
为什么不使用哈希表呢?
只需创建一些算法来散列一个人的名字,并根据您想要的颜色长度对其进行修改。例如:
var colours = ['#345321', '#888888', '#000011'];
function generateColour( name ){
// this is NOT a great hash but serves as an example
var sum = 0;
for (var i = 0; i < name.length; i++){
sum += name.charAt(i);
}
return sum % colours.length;
}
console.log( colours[generateColour( "Steve" )] );
Run Code Online (Sandbox Code Playgroud)
快速谷歌一下字符串哈希算法将会给你带来更好的算法。