我想在JavaScript中创建一个函数,如果给出一些输入,如1240
,那么它将输出为1000+200+40+0
。同样,如果16589
,则返回类似10000+6000+500+80+9
的值,依此类推。现在我想在JavaScript中创建一个函数,它可以返回像这样的值,但我在某个地方缺乏正确的方法,这将是什么样的正确方法?
答案 0 :(得分:3)
发布答案纯粹是因为解决问题很有趣。但实际上,如果你自己认真考试,你可能会在几分钟内解决这个问题。让chrome dev工具成为您最好的伙伴。 : - )
function express(_number) {
// s is a string representation of your number
// o is where the output is generated
var s = _number.toString(), o = '';
// while there are more digits
while(+s > 0) {
// append a separator if not the first digit
o += (o !== '' ? ' + ' : '');
// append the first digit followed by the appropriate number of zeros
o += (+s.substr(0, 1) * Math.pow(10, s.length - 1)).toString();
// strip off first digit from the number
s = s.substr(1);
}
// return the result
return o;
}
你可以这样称呼:
express(5467)
取回字符串"5000 + 400 + 60 + 7"
答案 1 :(得分:1)
好的techfoobar已经击败了我,并有更好的答案,但我已经完成了我的所以我发布它。它更多......贫民窟。
function blah(foo)
{
var foo = foo.toString();
var finalString = '';
for ( var i = 0; i < foo.length; i++ )
{
var temp = foo.charAt(i);
for(var j = 1; j < foo.length - i; j++)
{
temp = temp.concat('0');
}
if (i != foo.length - 1)
finalString = finalString.concat(temp + '+');
else
finalString = finalString.concat(temp);
}
return finalString;
}
编辑:如果地点值为0,我们的响应似乎都附加+0+,不确定如何处理,但可以轻松修复。
答案 2 :(得分:1)
假设所有都是整数
function parseNum(num) {
return num.toString().split('').reverse().map(function (val, idx) {
return val * Math.pow(10, idx);
}).reverse().join(' + ');
}
实施例
parseNum(1568); //1000 + 500 + 60 + 8
parseNum(98345);//90000 + 8000 + 300 + 40 + 5
的 DEMO 强>