Javascript:反转循环输出

时间:2014-09-11 11:30:23

标签: javascript

基本上我正在创建一个脚本来显示数字集的位置值。这是我的剧本:

var arrn = '3252';
var temp = 0;
var q = arrn.length;
var j = 0;

for (var i = q-1; i >= 0; i--,j++) {
    if (j!=0) temp = temp + ' + ';
    {
        temp += arrn[i] * Math.pow(10, j);
    }
}
alert(temp);

我的目标是达到3000 + 200 + 50 + 2.但我得到2 + 50 + 200 + 3000.我尝试了temp.reverse()&排序功能但似乎不起作用。请帮忙

5 个答案:

答案 0 :(得分:1)

更改

if(j!=0)temp=temp +' + ';
{
    temp +=arrn[i]*Math.pow(10,j);
}

if(j!=0) {
  temp=' + ' + temp;
}
temp = arrn[i]*Math.pow(10,j) + temp;

Live Example


旁注:上面第一个代码块中的大括号非常具有误导性。你有什么:

if(j!=0)temp=temp +' + ';
{
    temp +=arrn[i]*Math.pow(10,j);
}

if(j!=0)temp=temp +' + ';
temp +=arrn[i]*Math.pow(10,j);

也就是说

if(j!=0) {
    temp=temp +' + ';
}
temp +=arrn[i]*Math.pow(10,j);

您的版本中的区块与if无关,它只是一个独立区块。


附注2:由于您在其他地方使用temp作为字符串,我会使用''而不是0对其进行初始化。 Example你的字符串最终没有一个无关的0的原因实际上相当模糊不清。 : - )

答案 1 :(得分:1)

只需将数字添加到字符串的开头而不是结尾处:

for (var i = q - 1; i >= 0; i--, j++) {
  if (j != 0) {
    temp = ' + ' + temp;
  }
  temp = arrn[i] * Math.pow(10, j) + temp;
}

演示:http://jsfiddle.net/Guffa/rh9oso3f/

附注:在if语句后,您在代码中使用了一些令人困惑的括号。由于if语句后面有一个语句,从下一行开始的括号只是一个代码块,但很容易认为它应该是{{1中的条件时执行的代码声明是真的。

另一方面注意:许多年前,if标记的language属性已弃用。如果要指定语言,请使用script

答案 2 :(得分:0)

temp.split("+").reverse().join(" + ")怎么样?

答案 3 :(得分:0)

你可以这样做。我知道它可以优化。但它有效

var arrn='3252';
var temp=0;

var q=arrn.length;
var res = [];
var j=0;
for(var i=q-1;i>=0;i--,j++)
{
    temp += parseFloat(arrn[i])*Math.pow(10,j);
    res.push(arrn[i]*Math.pow(10,j));
}
res.reverse();
alert(res.join('+') + " = " + temp);
  

http://jsfiddle.net/he7p8y5m/

答案 4 :(得分:0)

var arrn='3252';
var temp=new Array();

var q=arrn.length;
for(var i=0;i<=q-1; i++){
    temp.push(arrn[i]*Math.pow(10,(q-i-1)));
}
temp = temp.join('+');
alert(temp);