Вы хотите, чтобы числовая часть (val
) была числом , прежде чем вы наберете toString
. Если это строка , когда вы вызываете toString
, она останется как есть:
let componentToHex = (val) => {
const a = Number(val).toString(16);
// ^^^^^^^^^^^
return a.length === 1 ? "0" + a : a;
}
let rgbtohex = (rgb) => {
return '#' + rgb
.match(/\d+/g)
.map(componentToHex)
.join('');
}
console.log(rgbtohex('rgb(1,255,148)'));
Также обратите внимание, что вы всегда должны объявлять переменные перед их использованием (иначе ошибки будут выдаваться в строгом режиме, или они будут неявно глобальными, что может вызвать ошибки).
Как вы можете видеть выше, функцию, которая принимает и преобразует входные числа, можно сделать более элегантной, если сопоставить символы di git, сопоставить с componentToHex
и затем присоединиться.