1. 用正则表达式判断是否为 rgb(255,0, 255)
2. 执行16进制转换:

  • 题目说明中已明确逗号分隔符后可能存在空格,应考虑replace掉
  • num.toString(16)不可,必须先转换为数字Number(num),而后toString(16)
  • 循环遍历,不能用for/in,因为for/in适用于字典,不适用于数字,用于数字遍历的是index,考虑用for/of(ES6)或者map
  • 16进制应格式化划为两位字符,应先判断数字长度,长度为1则"0"+data
    function rgb2hex(sRGB) {
      let pattern=/^(rgb)[(]{1}[0-5]{1,3},\s*[0-5]{1,3},\s*[0-5]{1,3}[)]{1}$/i;
      console.log(pattern.exec(sRGB));
      if ( pattern.test(sRGB)){
          let res=sRGB.slice(4,-1).split(",");
          let str ="#";
          res.map(
              function (item) {
                  let num=item.replace(" ","");
                  let data=Number(num).toString(16);
                  if (data.length==1){
                      data="0"+data;
                  }
                  str=str+data;
              }
          )
          return str;        
      }
      return sRGB;
    }
    

```