Когда я хочу выбрать n-й символ, я использую метод charAt(), но какой эквивалент я могу использовать при работе с целыми числами вместо строковых значений?
Как выбрать n-ю цифру в большом целое внутри javascript?
Ответ 1
Используйте 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);
Ответ 2
Это глупое решение, но, похоже, работает без преобразования в строку.
var number = 123456789;
var pos = 4;
var digit = ~~(number/Math.pow(10,pos))- ~~(number/Math.pow(10,pos+1))*10;
Ответ 3
Вы можете преобразовать число в строку и сделать то же самое:
parseInt((number + '').charAt(0))
Ответ 4
Если вы хотите использовать существующий метод, преобразуйте его в строку и используйте charAt.
Если вы хотите использовать метод, позволяющий преобразовать его в строку, вы можете играть в игры с делением на 10 раз, чтобы отделить достаточное количество цифр справа - скажем, для 123456789, если вам нужна цифра 3-го справа (6), разделите на 10 3 раза, получив 123456, затем возьмите результат mod 10, дающий 6. Если вы хотите начать подсчет цифр слева, что вы, вероятно, делаете, то вам нужно знать, сколько цифр (база 10) во всем количестве, которое вы могли бы вывести из базы 10 журнала номера... Все это вряд ли будет более эффективным, чем просто преобразование его в строку.
Ответ 5
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
Немного беспорядочно.
Math.floor(Math.log(Math.abs(val)) / Math.LN10)
Вычисляет количество цифр (-1) в числе.
Ответ 6
var num = 123456;
var secondChar = num.toString()[1]; //get the second character
Ответ 7
в 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 */