Вход

Просмотр полной версии : Помогите от сортировать


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
31.10.2011, 20:29
Почему не есть хорошо?)