有没有更好的方法来查找缩放到其位置的数字的数字?
例如:
'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];
}
答案 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;
}