Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите от сортировать (https://javascript.ru/forum/misc/22744-pomogite-ot-sortirovat.html)

9xakep 31.10.2011 19:00

Помогите от сортировать
 
<script type='text/javascript'>
var a = '49 66 70 67 60 41 56 81 12 24 42 30 33 41 25 41 78'
var b = a.split(' ').sort().reverse().join(' ').split(' ') 
for(i = 0;i<17;i++) 
var c = b[i]
var e = i + ')' + c // 17)12
</script>

Помогите отсортировать данные числа. Чтобы результат выводился так:
1)10 2)5 3) 3 итп
Попробовал сделать так:записываем числа в строку, преобразуем строку в массив, сортируем от большего к меньшему, далее сортируем от меньшего к большему, и опять в массив. После идет цикл, и в нем вся проблема, цикл перебирает все значения, и соответственно выводит последнее значение, но как сделать так, что бы перебрал первый элемент, перенес его в переменную, перебрал 2ой элемент, опять занес?

jazzz13 31.10.2011 19:58

Вы перемудрили с массивом. И в цикле у Вас только одно действие происходит - только одна строка, вместо предполагаемых двух. Вот решение:
var a = '49 66 70 67 60 41 56 81 12 24 42 30 33 41 25 41 78';
var b = a.split(' ').sort().reverse();
var mass = [];
for( var i = 0;i<17;i++){ 
  var c = b[i];
  var e = (i+1) + ') ' + c;
  mass.push(e);
}


Пояснение: во многих языках программирования, если после цикла не идут скобки {}, указывающие на тело цикла, то выполняется только следующие одно вырождение:
for(...)
a = 10; //в цикле
b = 20; //не в цикле
c = 30; //не в цикле

9xakep 31.10.2011 20:07

Спасибо, но уже нашел другой способ =)
var a = '49 66 70 67 60 41 56 81 12 24 42 30 33 41 25 41 78'
var b = a.split(' ').sort().reverse().join(' ').split(' ') 
for(i=1;i<17;i++) {
for(j = 0;j<1;j++) {
var c = b[i]
var e = i + ')' + c 
alert(e)
}
}

jazzz13 31.10.2011 20:23

Цитата:

Сообщение от 9xakep (Сообщение 133786)
Спасибо, но уже нашел другой способ =)

:) Цикл с одной итерации в цикле? Это не есть хорошо, но главное, что бы Вам нравилось )

9xakep 31.10.2011 20:29

Почему не есть хорошо?)


Часовой пояс GMT +3, время: 03:48.