找出地方价值

时间:2014-07-16 15:01:30

标签: javascript

我想在JavaScript中创建一个函数,如果给出一些输入,如1240,那么它将输出为1000+200+40+0。同样,如果16589,则返回类似10000+6000+500+80+9的值,依此类推。现在我想在JavaScript中创建一个函数,它可以返回像这样的值,但我在某个地方缺乏正确的方法,这将是什么样的正确方法?

3 个答案:

答案 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