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; }
```