質問

たとえば、「256」で「5」を取得します。私が最も近いのはMath.Floor(256/10))ですが、それはまだ前の数字を返します。私が望むものを手に入れる簡単な方法はありますか、それとも大きな機能を作らなければなりませんか?また、明確にするために、「n桁」が定義されます。たとえば、getDigit(2,256)は5(2桁目)を返します

役に立ちましたか?

解決

Math.floor((256 / 10) % 10)

またはより一般的に:

Math.floor(N / (Math.pow(10, n)) % 10)

どこ N 抽出される数字です n 数字の位置です。これは、右から始まる0からカウントされ(つまり、最小の桁= 0)、の無効な値を考慮していないことに注意してください。 n.

他のヒント

どうですか

(12345 + "")[3] 

また

(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,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));

あなたがすべてを数学的にやろうとしたい場合:

var number = 256;
var digitNum = 2;
var digit = ((int)(number/(Math.pow(10,digitNum-1))%10;

このコードは、0ではなく1から始まる右から数字をカウントします。0から開始するように変更する場合は、呼び出しの-1部分を削除します。

左から数えたい場合、それはより複雑になり、他のソリューションと同様になります。

var number = 256;
var digitNum = 2;
var digit = ((int)(number/(Math.pow(10,number.tostring().length-digitNum))%10;

編集:

また、これはあなたがあなたの番号システムにベース10が必要であることを前提としていますが、それらは両方とも他のベースで動作します。必要なのは、使用したい番号システムのベースを表す番号に、最終コード行の10のインスタンスを変更することです。 (すなわち、hexadecimal = 16、binary = 2)

// You do not say if you allow decimal fractions or negative numbers- 
// the strings of those need adjusting.

Number.prototype.nthDigit= function(n){
    var s= String(this).replace(/\D+/g,'');
    if(s.length<=n) return null;
    return Number(s.charAt(n))
}

変数「カウント」を使用してループを制御します

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を埋めます

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top