Question

Par exemple, obtenir "5" dans "256". Le plus proche que j'ai obtenu est Math.floor (256/10)), mais ça va revenir encore les chiffres devant. Y at-il moyen simple d'obtenir ce que je veux ou ce que je dois faire une grande fonction pour elle? En outre, pour plus de clarté: « n chiffres » serait défini. Exemple, getDigit (2256) reviendrait 5 (second chiffre)

Était-ce utile?

La solution

Math.floor((256 / 10) % 10)

ou plus généralement:

Math.floor(N / (Math.pow(10, n)) % 10)

N est le nombre à extraire, et n est la position du chiffre. Notez que ce compte de 0 à partir de la droite (à savoir, le moins significatif chiffre = 0), et ne tient pas compte des valeurs invalides de n.

Autres conseils

Que diriez-vous

(12345 + "")[3] 

ou

(12345 + "").charAt(3)

pour compter à partir de l'autre extrémité

[length of string - digit you want] donc si vous voulez que le 2, c'est:

5 - 4 = 1 
(12345 + "")[1] = "2"


function getNumber (var num, var pos){
  var sNum = num + "";

  if(pos > sNum.length || pos <= 0){return "";}

  return sNum[sNum.length - pos]; 

}

D'abord, vous devez jeter le numéro à une chaîne, vous pouvez accéder au caractère normal:

var num = 256;
var char = num.toString()[1]; // get the 2nd (0-based index) character from the stringified version of num

Modifier Notez également que, si vous souhaitez accéder sans définir le nombre comme une variable d'abord, vous avez besoin d'un .. double point pour accéder à la fonction:

var char = 256..toString()[1];

Le premier point indique l'interprète « ce chiffre est »; le deuxième accès à la fonction.

Convertir en chaîne et sous-chaîne (2,2)?

Cela devrait le faire:

function getDigit ( position, number ) {
  number = number + ""; // convert number to string
  return number.substr ( position + 1, 1 ); // I'm adding 1 to position, since 0 is the position of the first character and so on
}

Essayer cette dernière ligne est la clé:

var number = 12345;
var n = 2;
var nDigit = parseInt((number + '').substr(1,1));

Si vous voulez essayer de tout faire mathématiquement:

var number = 256;
var digitNum = 2;
var digit = ((int)(number/(Math.pow(10,digitNum-1))%10;

Ce code compte le chiffre du départ à droite avec 1, pas 0. Si vous souhaitez changer pour commencer à 0, supprimez la -1 partie dans l'appel.

Si vous souhaitez compter de la gauche, cela devient plus compliqué et semblable à d'autres solutions:

var number = 256;
var digitNum = 2;
var digit = ((int)(number/(Math.pow(10,number.tostring().length-digitNum))%10;

edit:

En outre, cela suppose que vous voulez base 10 pour votre système numérique, mais les deux personnes travaillera en collaboration avec d'autres bases. Tout ce que vous devez faire est de cas de changement de 10 dans la dernière ligne du code au numéro représentant la base du système de numéro que vous souhaitez utiliser. (Ie. Hexadécimal = 16, binaire = 2)

// You do not say if you allow decimal fractions or negative numbers- 
// the strings of those need adjusting.

Number.prototype.nthDigit= function(n){
    var s= String(this).replace(/\D+/g,'');
    if(s.length<=n) return null;
    return Number(s.charAt(n))
}
"Count"

variable d'utilisation de la boucle de commande

var count = 1; //starting 1
for(i=0; i<100; i++){
  console.log(count);
  if(i%10 == 0) count++;
}

sortie remplira 1 2 3 4 5 6 sept 8 9

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top