当我想选择第n个字符时,我使用charAt()方法,但在处理整数而不是字符串值时,我可以使用什么?
答案 0 :(得分:24)
使用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);
答案 1 :(得分:4)
这是一个愚蠢的解决方案,但似乎没有转换为字符串。
var number = 123456789;
var pos = 4;
var digit = ~~(number/Math.pow(10,pos))- ~~(number/Math.pow(10,pos+1))*10;
答案 2 :(得分:2)
您可以将数字转换为字符串并执行相同的操作:
parseInt((number + '').charAt(0))
答案 3 :(得分:2)
如果您需要现有方法,请将其转换为字符串并使用charAt。
如果你想要一种避免将其转换成字符串的方法,你可以玩游戏,将其重复除以10以从右边剥去足够的数字 - 例如123456789,如果你想要从右到右的数字(6),除以10 3次得到123456,然后得到结果mod 10得到6.如果你想从左边开始计数你可能做的数字,那么你需要知道有多少位数(基数10)是在整个数字中,您可以从数字的日志基数10中推断出......所有这些都不可能比将其转换为字符串更有效。
答案 4 :(得分:1)
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)。
答案 5 :(得分:0)
var num = 123456;
var secondChar = num.toString()[1]; //get the second character
答案 6 :(得分:0)
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 */