Javascript Chaîne à int conversion
J'ai le texte suivant JS immbedded dans une page:
var round = Math.round;
var id = $(this).attr("id");
var len = id.length;
var indexPos = len -1; //index of the number so that we can split this up and used it as a title
var pasType = id.substring(0, indexPos); //adult, child or infant
var ind = round(id.substring(indexPos)); //converts the string index to an integer
var number = (id.substring(indexPos) + 1); //creates the number that will go in the title
window.alert(number);
id
sera quelque chose comme adult0, et j'ai besoin de prendre cette chaîne et de le diviser en adulte et 0 - cette partie fonctionne très bien.
Le problème vient quand j'essaie d'incrémenter la valeur 0. Comme vous pouvez le voir j'utilise les Mathématiques.tour de convertir un nombre entier, puis ajoutez 1 - j'attends de 0 à 1 après cela. Cependant, il ne semble pas être le convertissant en entier, parce que je reçois 01
pas 1
. Lors de l'essai de ce avec adult1 l'alerte que j'obtiens est 11
.
Je suis en utilisant cette question de la référence, et ont aussi essayé var number += id.substring(indexPos);
qui rompt le JS (unexpected identifier '+='
)
Personne ne sait ce que je fais mal? Est-il une meilleure manière de faire ceci?
source d'informationauteur Skytiger
Vous devez vous connecter pour publier un commentaire.
La
parseInt()
fonction traite unstring
et renvoie uninteger
,10 est la Base ou de la Base de[DOC]
C'est le faire avec du JavaScript
+
dans l'opérateur - si un nombre et une chaîne sont "ajoutés", le nombre est converti en une chaîne de caractères:Pour résoudre ce problème, utilisez la
+
opérateur unaire, ou de l'utilisationparseInt()
:Unaire
+
opérateur convertit en un nombre (toutefois, si c'est un nombre décimal, il conservera le nombre de décimales), etparseInt()
est auto-explicatif (convertit en nombre, en ignorant les décimales).Le deuxième argument est nécessaire pour
parseInt()
à l'utilisation correcte de la base à la tête d'0s sont placés:Il y a aussi
parseFloat()
si vous avez besoin de convertir des décimales dans les chaînes de leur valeur numérique -+
peut le faire aussi, mais il se comporte légèrement différemment: c'est une autre histoire.JS pense que le 0 est une chaîne de caractères, qui il est réellement, à convertir en int, utiliser le: parseInt() de la fonction, comme:
Si le nombre n'est pas possible de convertir un int, il sera de retour NaN, alors je vous recommandons de vérifier aussi dans le code utilisé dans la production ou au moins si vous n'êtes pas sûr à 100% de l'entrée.
Si vous êtes sûr de l'id.substring(indexPos) est un nombre, vous pouvez le faire comme ceci:
Sinon je suggérons de vérifier si le Numéro de fonction évalue correctement.
Utiliser parseInt():
Convertir par
Number Class
:-Par exemple:
De sortie: 104
Remarque:-
Number
est classe. Quand nous passons de la chaîne, puis constructeur deNumber class
convertit.Bien que
parseInt
est la fonction officielle pour ce faire, vous pouvez réaliser la même chose avec ce code:L'avantage est que vous économiser de caractères, ce qui peut économiser de la bande passante si votre code a pour beaucoup de ces conversations.