Javascript 获取一个2+;三位数

Javascript 获取一个2+;三位数,javascript,numbers,digit,Javascript,Numbers,Digit,例如,在“256”中获得“5”。我得到的最接近的是Math.floor(256/10)),但它仍然会返回前面的数字。有什么简单的方法可以得到我想要的,或者我需要为它做一个大的函数吗?此外,为了清楚起见,将定义“n位”。例如,getDigit(2256)将返回5(第二个数字)这应该可以: function getDigit ( position, number ) { number = number + ""; // convert number to string return numb

例如,在“256”中获得“5”。我得到的最接近的是Math.floor(256/10)),但它仍然会返回前面的数字。有什么简单的方法可以得到我想要的,或者我需要为它做一个大的函数吗?此外,为了清楚起见,将定义“n位”。例如,getDigit(2256)将返回5(第二个数字)

这应该可以:

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
}

转换成字符串和子字符串(2,2)?

怎么样

(12345 + "")[3] 

从另一端数

[字符串长度-您想要的数字]
因此,如果您想要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]; 

}
5-4=1
(12345 + "")[1] = "2"
函数getNumber(变量num,变量pos){
var sNum=num+“”;
如果(位置>最小长度| |位置
或者更一般地说:

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

其中,
N
是要提取的数字,
N
是数字的位置。请注意,这从右侧开始从0开始计数(即,最低有效位=0),并且不解释无效的
n

值。首先,需要将数字转换为字符串,然后才能正常访问字符:

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];

第一个点告诉解释器“这是一个数字”;第二个点访问函数。

试试这个,最后一行是键:

var number = 12345;
var n = 2;
var nDigit = parseInt((number + '').substr(1,1));
//您不会说是否允许小数或负数-
//他们的关系需要调整。
Number.prototype.nthDigit=函数(n){
var s=String(this).replace(/\D+/g',);

如果(s.length如果你想尝试用数学方法做每件事:

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++;
}
var count=1;//开始1

对于(i=0;i您没有指定是从左还是从右计数。许多答案返回的值是字符串,而不是整数。这有关系吗?泛化是不正确的。只需将n=2放在自己身上就可以了。@Martin v.Löwis:谢谢。我在写这篇文章的时候分心了。嗯。这仍然不对:您失踪了结束parens,和“%n”应该是“%10”。@Martin v.Löwis:是的,这就是我的意思。再次感谢。我在URL栏中用javascript:测试了这一点,它对我有效。我还想使用一种公式(就像这样)这是我的首选答案,而不是字符串。最有可能的是,OP希望从另一端开始计数。我希望它从最小到最大进行计数。最有可能的是,OP希望从另一端开始计数。
charAt(1)
看起来比
substr(1,1)
更好
var number = 256;
var digitNum = 2;
var digit = ((int)(number/(Math.pow(10,digitNum-1))%10;
var number = 256;
var digitNum = 2;
var digit = ((int)(number/(Math.pow(10,number.tostring().length-digitNum))%10;
var count = 1; //starting 1
for(i=0; i<100; i++){
  console.log(count);
  if(i%10 == 0) count++;
}