Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Java / JavaScript


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Botsman
Статус: Специалист
Рейтинг: 216
∙ повысить рейтинг >>
Товарищ Бородин
Статус: Академик
Рейтинг: 163
∙ повысить рейтинг >>
Hubbitus
Статус: 10-й класс
Рейтинг: 150
∙ повысить рейтинг >>

∙ / КОМПЬЮТЕРЫ И ПО / Языки программирования / Java/JavaScript

Выпуск № 633 от 22.06.2009, 11:35
Администратор рассылки: Калашников О.А., Руководитель
В рассылке: подписчиков - 461, экспертов - 94
В номере: вопросов - 1, ответов - 2

Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
оценить выпуск >>

Вопрос № 169502: Здравствуйте. Скажите пожалуйста как провести сортировку в массиве на js , что получился следующий результат: ...



Вопрос № 169502:

Здравствуйте.
Скажите пожалуйста как провести сортировку в массиве на js , что получился следующий результат:

Отправлен: 17.06.2009, 11:33
Вопрос задал: Dima1967, Посетитель
Всего ответов: 2
Страница вопроса >>


Отвечает 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 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Отвечает Товарищ Бородин, Академик :
    Здравствуйте, 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 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!



    Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке:
    оценить выпуск >>

    подать вопрос экспертам этой рассылки >>

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.3 от 20.06.2009

    В избранное