基本上我正在创建一个脚本来显示数字集的位置值。这是我的剧本:
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()&排序功能但似乎不起作用。请帮忙
答案 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;
旁注:上面第一个代码块中的大括号非常具有误导性。你有什么:
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);
答案 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);