Estoy confundido... Tengo un número como cadena ( '3' ), y quiero que se convierta en un número de tipo Número normal. Si entro en cualquier consola y hago Number('3') , devolverá 3 .
Sin embargo, en este código devuelve NaN :
const attr = "rating='3'"; const [attrName, attrValue] = attr.split('='); // if the attrValue is a number, cast it as such if (!Number.isNaN(attrValue)) { const numAttr = Number(attrValue); console.log('num: ', numAttr, attrValue.length, attrValue.charCodeAt(0)); } Confirmo que el primer código de caracteres de la cadena de números es 39, que es un apóstrofe simple, y su longitud es 3, por lo que no hay caracteres ocultos engañosos. Sin embargo, el valor numAttr es NaN . También entra en la declaración if, que presumiblemente me dice que, de hecho, puede convertirse en un número.
Tienes que reemplazar las comillas simples alrededor del número. Puede usar la función replace() para esto:
const attr = "rating='3'"; let [attrName, attrValue] = attr.split('='); const para1 = attrName; const para2 = attrValue.replace(/'/g, ''); console.log(para1, para2); console.log('isNAN()?',isNaN(para2))isNaN = no es un Número?