11
votes

Nœud.js / javascript - la chaîne de coulée à entier retourne Nan quand je ne m'attendrais pas à ce que ce soit

Tout cela est dans le contexte d'un programme plus vaste, alors je vais essayer de le garder simple, montrant uniquement les lignes incriminées. J'ai une gamme de valeurs qui sont des chiffres dans la chaîne forment un "84", "32", etc.

cette ligne p> xxx pré>

impressions: p >

4 "84" NaN 84


3 commentaires

Est-ce que non résolu [0] inclure les guillemets doubles dans sa valeur réelle?


La valeur de non résolu [0] semble être '"84"' au lieu de '84 '


C'est - ça doit être le problème, je pense


4 Réponses :


7
votes

parseint prendrait tout à partir du début de son argument qui ressemble à un numéro et ne tient pas compte du reste. Dans votre cas, l'argument que vous l'appelez avec le démarrage avec ", alors rien ne ressemble à un numéro, et il essaie de lancer une chaîne vide, ce qui n'est vraiment pas un nombre.


0 commentaires

11
votes

Vous pouvez essayer de supprimer les citations de la chaîne à traiter à l'aide de cette fonction:

parseInt(unsolved[0], 10);


1 commentaires

Utilisé ceci - Valeur de retour modifiée à m_strout cependant :)



3
votes

Vous devez vous assurer que l'élément de tableau est en effet une chaîne qui est possible d'analyser un nombre. Votre élément de tableau ne contient pas la valeur '84 ' code>, mais la valeur ' "84" ' code> (une chaîne contenant un numéro encapsulé par ")

vous 'll veut supprimer le " code> à partir de vos éléments de matrice, possibles comme ceci: p>

function removeQuotationMarks(string) {
  return (typeof string === 'string') ? string.replace(/"|'/g, '') : string;
}

unsolved = unsolved.map(removeQuotationMarks);


1 commentaires

Grand effort :)



0
votes

Nous devons d'abord remplacer "à" dans Donnez des données à l'aide de regex et de remplacer, puis nous devons lancer.

p>

var i = 1;
var j = "22"
function stringToNumber(n) {
  return (typeof n === 'string') ? parseInt(Number(n.replace(/"|'/g, ''))) : n;
}

console.log(stringToNumber(i)); // 1
console.log(stringToNumber(j)); // 22


0 commentaires