N番目の文字を選択するときは、charAt()メソッドを使用しますが、文字列値の代わりに整数を処理するときに使用できる同等のものは何ですか?
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);
これはばかげた解決策ですが、文字列に変換しなくても機能するようです。
var number = 123456789;
var pos = 4;
var digit = ~~(number/Math.pow(10,pos))- ~~(number/Math.pow(10,pos+1))*10;
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)を計算します。
数値を文字列に変換して同じことを行うことができます。
parseInt((number + '').charAt(0))
既存のメソッドが必要な場合は、それを文字列に変換してcharAtを使用します。
文字列への変換を回避する方法が必要な場合は、10で繰り返し除算してゲームをプレイし、右から十分な桁を削除できます。たとえば、右から3番目の桁が必要な場合は123456789(6) 、10で3倍して123456を生成し、結果mod 10を取得して6を生成します。左から桁数を数え始めたい場合は、おそらくそうしますが、全体の桁数(基数10)を知る必要があります。数値。数値の10を底とするログから推測できます...これはすべて、単に文字列に変換するよりも効率的ではない可能性があります。
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 */
var num = 123456;
var secondChar = num.toString()[1]; //get the second character