Domanda

Per esempio, ricevendo "5" in "256". Il più vicino che ho ottenuto è Math.floor (256/10)), ma che sarà ancora tornare i numeri di fronte. C'è un modo semplice per ottenere ciò che desidera o avrei dovuto fare una grande funzione per esso? Inoltre, per chiarezza: "n cifre" sarebbe definita. Esempio, getDigit (2.256) restituirebbe 5 (seconda cifra)

È stato utile?

Soluzione

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

o più in generale:

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

dove N è il numero da estrarre, ed n è la posizione della cifra. Si noti che questo conta da 0 a partire da destra (vale a dire, la cifra meno significativa = 0), e non tiene conto di valori non validi di n.

Altri suggerimenti

come su

(12345 + "")[3] 

o

(12345 + "").charAt(3)

a contare dall'altra estremità

[length of string - digit you want] quindi se si desidera che il 2 di essa la:

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]; 

}

In primo luogo, è necessario esprimere il numero in una stringa, allora è possibile accedere al carattere come normale:

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

Modifica Si noti anche che, se si vuole accedervi senza impostare il numero come una variabile prima, è necessario un punto .. doppia Per accedere alla funzione:

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

Il primo punto dice l'interprete "questo è un numero"; il secondo di accedere alla funzione.

Converti in corda e substring (2,2)?

Questo dovrebbe farlo:

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
}

Prova questo, ultima riga è la chiave:

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

Se si vuole cercare di fare tutto matematicamente:

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

Questo codice conta la cifra dalla partenza destra con 1, non 0. Se si desidera cambiare per avviare a 0, eliminare il -1 parte nella chiamata.

Se si desidera contare da sinistra, diventa più complicato e simile ad altre soluzioni:

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

modifica:

Inoltre, questo presuppone che si desidera in base 10 per il sistema di numerazione, ma sia di quelli lavorerà con altre basi. Tutto quello che devi fare è istanze variazione del 10 nella riga finale di codice per il numero che rappresenta la base per il sistema di numero che si desidera utilizzare. (Es. Esadecimale = 16, binario = 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))
}

uso variabile "conteggio" per loop di controllo

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

uscita riempirà 1 2 3 4 5 6 7 8 9

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top