Как выбрать n-ую цифру в большом целом числе внутри JavaScript? - PullRequest
14 голосов
/ 11 января 2011

Когда я хочу выбрать n-й символ, я использую метод charAt (), но какой эквивалент я могу использовать при работе с целыми числами вместо строковых значений?

Ответы [ 7 ]

24 голосов
/ 11 января 2011

Использование 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); 
4 голосов
/ 11 января 2011

Это глупое решение, но, похоже, работает без преобразования в строку.

var number = 123456789;
var pos = 4;
var digit = ~~(number/Math.pow(10,pos))- ~~(number/Math.pow(10,pos+1))*10;
2 голосов
/ 11 января 2011

Если вам нужен существующий метод, преобразуйте его в строку и используйте charAt. * ​​1001 *

Если вам нужен метод, позволяющий избежать преобразования его в строку, вы можете играть в игры с повторным делением его на 10, чтобы убрать достаточное количество цифр справа - например, 123456789, если вам нужна цифра 3 справа (6), разделите на 10 3 раза, получив 123456, затем возьмите мод результата 10, получив 6. Если вы хотите начать считать цифры слева, что вы, вероятно, делаете, то вам нужно знать, сколько цифр (основание 10) во всем числе, которое вы можете вывести из лог-базы 10 числа ... Все это вряд ли будет более эффективным, чем просто преобразование его в строку.

2 голосов
/ 11 января 2011

Вы можете преобразовать число в строку и сделать то же самое:

parseInt((number + '').charAt(0))

1 голос
/ 24 сентября 2015
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) в числе.

0 голосов
/ 16 марта 2016
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 */
0 голосов
/ 11 января 2011
var num = 123456;
var secondChar = num.toString()[1]; //get the second character
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...