如何找到缩放到其位置的数字的数字?

时间:2014-06-26 19:20:00

标签: javascript

有没有更好的方法来查找缩放到其位置的数字的数字?

例如:

  • '53'['50', '3']
  • '123'['100', '20', '3']

这是我到目前为止所尝试的内容:

function generateCC(x) {
  var first_c = x.charAt(0);
  for(var i=0;i<x.length-1;i++)
    first_c += '0';
  var second_c = x-first_c;
  return [first_c, second_c];
}

2 个答案:

答案 0 :(得分:0)

function digit(num, n)
{
   return Math.floor(num / (Math.pow(10, n)) % 10
}

digit(53,0)返回3 digit(53,1)返回5

您可以使用字符串[]

转换为字符串并访问个别数字
var res = [];
var num = 53;
var str = num.toString();
for (var i = 0; i < str.length; i++){
    res.push( parseInt(str[i]) * Math.pow (10, str.length - i - 1) );
}

res将是[50,3]

答案 1 :(得分:0)

这是我想出的一个快速实现。

function getDigitsScaled(x) {
    var i = '';
    return x.toString().split('')
            .reverse()
            .map(function(d) { return (d += i, i += '0', d); });
}

但是,这将以相反的顺序返回数组(['3', '50']而不是['50', '3'])。此版本将以正确的顺序返回它们:

function getDigitsScaled(x) {
    var s = x.toString(), i = Array(s.length).join('0');
    return s.split('')
            .map(function(d) { return (d += i, i = i.substr(1), d); });
}

以前的版本设计用于处理字符串,但这是一个适用于数字的版本:

function getDigitsScaled3(x) {
    var i = 1, j = 10, arr = [];
    do {
        arr.push(x % j - x % i);
        i *= 10;
        j *= 10;
    }
    while (i < x);
    return arr;
}