2014-09-11 2 views
-1

В основном я создаю скрипт для отображения значения места для набора чисел. Вот мой сценарий:Javascript: Реверсивный цикл ouput

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() & сортировки функции, но не кажется работать. Пожалуйста, помогите

+1

Ваш код довольно искаженное. У вас есть заявление после вашего 'if', а затем скобки. Я не буду пытаться исправить ваш код, но вы должны внимательно изучить эту строку. Вы имеете в виду 'if (j! = 0) {temp = temp + '+'; temp + = arrn [i] * Math.pow (10, j); } '? Если нет, то почему там фигурные скобки? – Joe

ответ

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


Side Примечание: Ваши брекеты в первом блоке кода выше очень в заблуждение. Что у вас есть:

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, действительно была довольно неясно. :-)

+0

@ user2672112: Хит обновления, я понял секунду или около того после публикации, которую вы добавляли в 'temp' снова в другом месте. :-) –

0

Как насчет temp.split("+").reverse().join(" + ")?

+0

Это дает мне этот folkol, 2502003000 – user2672112

+0

@ user2672112: текущий ответ folkol работает: http://jsbin.com/cuneco/5 (я бы этого не делал, я бы построил строку в правильном заказ по назначению, но он * делает * работу, кроме испортить ваши пробелы). Я не знаю, если бы вы, возможно, смотрели на более раннюю копию, и он/она поскользнулся в редактировании ниндзя ... –

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/

Side Примечание: Вы используете некоторые запутанные скобки в коде после if заявления , Поскольку существует инструкция, следующая за оператором if, скобки, начинающиеся со следующей строки, становятся всего лишь кодовым блоком, но легко думать, что это должен быть код, который выполняется, когда условие в операторе if истинно.

Другое примечание стороны: атрибут language для тега script был устаревшим много лет назад. Используйте type="text/javascript", если вы хотите указать язык.

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/

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);