Frage

Zum Beispiel "5" in "256" zu bekommen. Die nächstgelegene ich bekommen habe ist Math.floor (256/10)), aber das wird noch die Zahlen vor zurückzukehren. Gibt es eine einfache Möglichkeit zu bekommen, was ich will oder würde ich eine große Funktion dafür machen müssen? Auch für Klarheit: „n Ziffer“ würde definiert. Beispiel getDigit (2256) zurückkehren würde 5 (zweite Ziffer)

War es hilfreich?

Lösung

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

oder allgemeiner:

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

Dabei gilt N die Zahl extrahiert werden, und n ist die Position der Ziffer. Beachten Sie, dass diese Zählungen von 0 beginnend von rechts (das heißt, die niedrigstwertige Ziffer = 0), und nicht für ungültige Werte von n nicht berücksichtigen.

Andere Tipps

, wie etwa

(12345 + "")[3] 

oder

(12345 + "").charAt(3)

vom anderen Ende zählen

[length of string - digit you want] so, wenn Sie die 2 es ist:

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

}

Zuerst müssen Sie die Nummer auf eine Zeichenfolge werfen, dann können Sie das Zeichen als normal zugreifen:

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

Edit: Beachten Sie auch, dass, wenn Sie zugreifen möchten, ohne die Zahl als variable Einstellung ersten benötigen Sie einen Doppelpunkt .. den Zugriff auf die Funktion:

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

Der erste Punkt teilt den Interpreter „dies ist eine Zahl“; der zweite greift auf die Funktion.

Convert to-String und substring (2,2)?

Das sollte es tun:

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
}

Versuchen Sie dieses, letzte Zeile ist der Schlüssel:

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

Wenn Sie wollen, alles versuchen, mathematisch zu tun:

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

Dieser Code zählt die Ziffer von rechts beginnend mit 1, nicht 0. Wenn Sie es ändern möchten bei 0, löschen Sie die -1 Teil in dem Aufruf zu starten.

Wenn Sie von der linken Seite zählen wollen, wird es komplizierter und ähnlich wie bei anderen Lösungen:

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

edit:

Auch dies setzt voraus, Sie wollen Basis 10 für Ihr Zahlensystem, aber beide von denen mit anderen Basen arbeiten. Alles was Sie tun müssen, ist, den Sie verwenden möchten, ändern Instanzen von 10 in der letzten Zeile des Codes der Anzahl die Basis für die Zahlensystem darstellt. (Dh. Hexadezimal = 16, binär = 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))
}

Verwendung Variable "count" auf Regelkreis

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

Ausgabe füllt 1 2 3 4 5 6 7 8 9

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top