前端练习16 16进制颜色值转 RGB 值

题目

完成函数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] =
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值