题目
完成函数hexToRGB
,它的作用将16进制颜色值转换成RGB值:
hexToRGB('#F0F0F0') // => rgb(240, 240, 240)
hexToRGB('#9fc') // => rgb(153, 255, 204)
hexToRGB('无效颜色') // => null
实现
实现要明确16进制和RGB值的区别,16进制颜色是用3个十六进制值代表颜色,对应的值转换为10进制数就是RGB值
其他进制转换为10进制的方法是使用parseInt
,10进制转换为其他进制的方法是使用toString()
还要注意对非法值的处理,用正则处理比较简单,还要注意16进制简写的处理
const hexToRGB = (hex) => {
if (typeof hex !== 'string') {
return null;
}
// 过滤非法输入
if (!/^#[0-9ABCDEFabcdef]{1,6}$/.test(hex)) {
return null
}
let pureStr = hex.slice(1);
// 处理简写形式
if (pureStr.length === 3) {
// 7f7 => [7, f, 7] => [[7], [f], [7]] => [[77], [ff], [77]] => [77, ff, 77] =