我已经写了一个工作方法,可以将rgb值数组转换为十六进制颜色字符串:
/**
* @param {Number[]} arr Array with three entries (rgb: [0-255, 0-255, 0-255]).
* @return {String} Hex color as a string (rgb: '#000000' - '#ffffff').
*/
function arrToHex(arr) {
return '#' + arr
.map(v => ('0' + v.toString(16)).slice(-2))
.join('');
}
但是我不确定这种方法是否是提高效率的最佳方法。我的代码中经常调用此方法。
特别是带有('0' + v.toString(16)).slice(-2)
的部分(获得双十六进制)对我来说似乎太复杂了。可以做得更好吗?这种功能方法是最好的吗?
您可以尝试完全避免迭代:
function rgb2hex(arr) {
const rgb = arr[2] | (arr[1] << 8) | (arr[0] << 16);
return '#' + (0x1000000 + rgb).toString(16).slice(1);
}