Например, получить «5» в «256». Самое близкое, что я получил, это Math.floor(256/10)), но это все равно вернет числа впереди. Есть ли простой способ получить то, что я хочу, или мне придется сделать для этого большую функцию? Кроме того, для ясности: будет определена «цифра n». Например, getDigit(2,256) вернет 5 (вторая цифра).
получить число из n цифр в 2+ цифровом числе
Ответы (8)
Math.floor((256 / 10) % 10)
или в более общем плане:
Math.floor(N / (Math.pow(10, n)) % 10)
где N
— число, которое нужно извлечь, а n
— позиция цифры. Обратите внимание, что это считается с 0, начиная справа (т. е. младшая значащая цифра = 0), и не учитывает недопустимые значения n
.
как насчет
(12345 + "")[3]
or
(12345 + "").charAt(3)
считать с другого конца
[length of string - digit you want]
поэтому, если вы хотите 2, это:
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];
}
Во-первых, вам нужно привести число к строке, затем вы можете получить доступ к символу как обычно:
var num = 256;
var char = num.toString()[1]; // get the 2nd (0-based index) character from the stringified version of num
Редактировать: обратите также внимание на то, что если вы хотите получить к ней доступ без предварительной установки числа в качестве переменной, вам потребуется двойная точка ..
для доступа к функции:
var char = 256..toString()[1];
Первая точка сообщает интерпретатору «это число»; второй обращается к функции.
Преобразовать в строку и подстроку (2,2)?
Это должно сделать это:
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
}
Попробуйте это, последняя строка является ключевой:
var number = 12345;
var n = 2;
var nDigit = parseInt((number + '').substr(1,1));
charAt(1)
выглядит лучше, чем substr(1,1)
для этой цели :)
- person dheerosaur; 24.12.2010
Если вы хотите попытаться сделать все математически:
var number = 256;
var digitNum = 2;
var digit = ((int)(number/(Math.pow(10,digitNum-1))%10;
Этот код считает цифру справа, начиная с 1, а не с 0. Если вы хотите изменить его, чтобы он начинался с 0, удалите часть -1 в вызове.
Если вы хотите считать слева, это становится более сложным и похожим на другие решения:
var number = 256;
var digitNum = 2;
var digit = ((int)(number/(Math.pow(10,number.tostring().length-digitNum))%10;
редактировать:
Кроме того, это предполагает, что вам нужна база 10 для вашей системы счисления, но обе они будут работать с другими базами. Все, что вам нужно сделать, это изменить экземпляры 10 в последней строке кода на число, представляющее основу для системы счисления, которую вы хотите использовать. (т.е. шестнадцатеричный = 16, двоичный = 2)
используйте переменную "count" для управления циклом
var count = 1; //starting 1
for(i=0; i<100; i++){
console.log(count);
if(i%10 == 0) count++;
}
вывод заполнит 1 2 3 4 5 6 7 8 9