Quando voglio selezionare l'ennesimo carattere, io uso il metodo charAt(), ma qual è l'equivalente che posso usare quando si tratta di numeri interi anziché di valori stringa?Come seleziono l'ennesima cifra in un numero intero all'interno di javascript?
risposta
Uso String()
:
var number = 132943154134;
// convert number to a string, then extract the first digit
var one = String(number).charAt(0);
// convert the first digit back to an integer
var one_as_number = Number(one);
si potrebbe convertire il numero in una stringa e fare la stessa cosa:
parseInt((number + '').charAt(0))
Se si desidera un metodo esistente, convertirlo in una stringa e usa charAt.
Se si desidera un metodo che eviti di convertirlo in una stringa, è possibile giocare ripetutamente per 10 volte per rimuovere un numero sufficiente di cifre dalla destra, ad esempio 123456789, se si desidera il 3 ° da destra digit (6), dividi per 10 3 volte producendo 123456, quindi prendi il risultato mod 10 ottenendo 6. Se vuoi iniziare a contare cifre da sinistra, cosa che probabilmente fai, allora devi sapere quante cifre (base 10) sono nel numero intero, che è possibile dedurre dalla base del registro 10 del numero ... È improbabile che tutto ciò sia più efficace della semplice conversione in stringa.
È una soluzione stupida ma sembra funzionare senza conversione in stringa.
var number = 123456789;
var pos = 4;
var digit = ~~(number/Math.pow(10,pos))- ~~(number/Math.pow(10,pos+1))*10;
Questo è un bel modo succinto di esprimere in codice ciò che ho suggerito in un'altra risposta: http://stackoverflow.com/questions/4654715/how-do-i-select-the-nth-digit-in-a-arge- integer-inside-javascript/4654765 # 4654765 - ma come nella mia descrizione in prosa, "pos" sta contando le posizioni da destra. Dovresti sottrarre pos dalla base di log 10 del numero per contare da sinistra, che è ciò che è previsto qui. – metamatt
var num = 123456;
var secondChar = num.toString()[1]; //get the second character
function digitAt(val, index) {
return Math.floor(
(
val/Math.pow(10, Math.floor(Math.log(Math.abs(val))/Math.LN10)-index)
)
% 10
);
};
digitAt(123456789, 0) // => 1
digitAt(123456789, 3) // => 4
un po 'confuso.
Math.floor(Math.log(Math.abs(val))/Math.LN10)
calcola il numero di cifre (-1) nel numero.
in jQuery
var number = 123456789
function return_digit(n){
r = number.toString().split('')[n-1]*1;
return r;
}
return_digit(3); /* returns 3 */
return_digit(6); /* returns 6 */
quello che impedisce di utilizzare charAt()? – naveen
charAt funziona solo su stringhe, quindi devi prima convertirlo. – majelbstoat