Отвечает Alex_Nick, 2-й класс :
Здравствуйте, Dima1967.
Для получения нужного Вам результата при сортировке сравнивайте элементы массива как строки, например if(String(a[i])>String(a[i+1]){перестановка}
Ответ неверный. При таком способе, в частности, 1_4>1_3>1_18>1_1, тогда как по условию задания требуется 1_18>1_4>1_3>1_1
-----
∙ Отредактировал: Лысков Игорь Витальевич, Модератор
∙ Дата редактирования: 17.06.2009, 17:40 (время московское)
Ответ отправил: Alex_Nick, 2-й класс
Ответ отправлен: 17.06.2009, 14:18
Оценка ответа: 3
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 251083
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает Товарищ Бородин, Академик :
Здравствуйте, Dima1967. Можно сравнивать элементы, но это путь, откровенно говоря, топорный. Гораздо лучше было бы на Вашем месте вспомнить, что Ваш массив - это Javascript-объект типа Array. А у объектов данного типа есть метод sort(compareFunction), где compareFunction - ссылка на функцию сравнения. Ее, эту функцию, с помощью которой Вы хотите упорядочивать массив, надо написать предварительно, но это параметр необязательный. Но так как, насколько я понимаю, члены массива упорядочиваются у Вас не в
слишком алфавитном порядке, напишем функцию. Итак, общий код примерно следующий:
// функция сравнения должна возвращать следующие значения: // 1, если a следует после b // 0, если порядок следования не меняется // -1, если b следует после a function compare(a, b) { var p_a = a.split('_'); var p_b = b.split('_'); // теперь переходим непосредственно к сравнению строк if (p_a[0] < p_b[0]) { // если первая цифра первого числ
а меньше, чем первая цифра второго числа, то вторая строка следует за первой return -1; }
if (p_a[0] > p_b[0]) { // если первая цифра первого числа больше, чем первая цифра второго числа, то первая строка следует за второй return 1; } if (p_a[0] == p_b[0]) { // если первые цифры обоих чисел равны, то сравниваем вторые числа if (p_a[1] < p_b[1]) { // если второе число больше первого, вторая строка следует за первой return -1; } else { // а здесь наоборот return
1; } } } var a = [1,1_1...]; // исходный массив var b = a.sort(compare); // получаем нужный нам массив.
С уважением, Товарищ Бородин
Ответ отправил: Товарищ Бородин, Академик
Ответ отправлен: 17.06.2009, 15:27
Оценка ответа: 5 Комментарий к оценке: 5
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 251090
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.