2017-07-29 95 views
1

我正在与freecodecamp研究,并需要找到一种方法将数字转换为位置数字的总和,如[1234]至[1000,200,30,4 ]。 代码如下所示:javascript中的位置数字的总和

for(var i=0;i<newArr.length;i++){ 
    var order = newArr.length-1 - i; 
    newArr.splice(i,1,newArr[i]*1e(order)); 
} 

这里newArr将是1234 节点给出错误:无效令牌1E(订单)。 需要一些建议如何使它正确。

+3

指数表示法仅适用于数字文字,您不能将表达式替换为指数。 – Barmar

回答

1

我认为你可以使用下面的逻辑

var n = 123456; 
 
    n=n.toString(); 
 
    var arr = n.split(""); 
 
    var b = arr.map(function(x,i) { 
 
     return x * Math.pow(10, (arr.length-i-1));; 
 
    }); 
 
    console.log(b);

+0

thanks.Your解决方案很短,工作正常 – Grigoriy

1

var a = 1234 
 
b = [] 
 
while(a>0){ 
 
\t b.unshift(a%10 * (10 ** b.length)) 
 
\t a = parseInt(a/10) 
 
} 
 
console.log(b)

+1

这似乎是倒退,但很好,你不必转换为字符串。你可以用'b.unshift()'而不是'push()'来匹配问题 –

1

Number.prototype.padRight = function (n,str) { 
 
    return (this < 0 ? '-' : '') + (Math.abs(this)+ Array(n-String(Math.abs(this)).length+1).join(str||'0')); 
 
} 
 
var digits = "1234" 
 
var tempCounter= digits.length; 
 
var result=[]; 
 
for(var i=0;i<digits.length;i++,tempCounter--){ 
 
    result.push(parseInt(digits[i]).padRight(tempCounter)) 
 
} 
 
console.log(result);