将RGB数字数组转换为十六进制颜色字符串

问题描述 投票:0回答:1

我已经写了一个工作方法,可以将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)的部分(获得双十六进制)对我来说似乎太复杂了。可以做得更好吗?这种功能方法是最好的吗?

javascript arrays hex rgb converters
1个回答
0
投票

您可以尝试完全避免迭代:


  function rgb2hex(arr) {
        const rgb = arr[2] | (arr[1] << 8) | (arr[0] << 16);
        return '#' + (0x1000000 + rgb).toString(16).slice(1);
  }


© www.soinside.com 2019 - 2024. All rights reserved.