Сортировка в Js

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем fleur, 7 июн 2006.

Статус темы:
Закрыта.
  1. fleur

    fleur Гость

    1. Определить конструктор объектов "авиарейсы"
    Свойства: пункт назначения; время отправления;
    дни (недели) выполнения рейса; длительность полета;
    стоимость билета.
    2. В скрипте создать массив из 10-ти объектов, явно указав в
    аргументах конструктора значения всех свойств.
    3. Сформировать и вывести в HTML-документе таблицу (список)
    свойств авиарейсов.
    4. В диалоге с пользователем выяснить по какому из следующих
    критериев нужно упорядочить список.
    - по алфавиту (по названиям пунктов назначения);
    - по возрастанию стоимостей билетов;
    - поместить в начале рейсы, пункт назначения которых ввел
    пользователь;
    - по дням недели.
    5. Отсортировать массив объектов по выбранному критерию.
    6. Вывести в том же HTML-документе отсортированный
    список (таблицу)

    Не знаю, как по дням недели отсортировать... Буду благодарна, если кто поможет...
    Вот код:
    Код (Text):
    <HTML>
    <HEAD>
    <script>
    // Конструктор объектов "авиарейсы"
    function aviareis (punkt_naznacheniya, vremya_otpravleniya, den_reisa, dlitelnost_poleta, stoimost_bileta)
    {
    this.punkt_naznacheniya = punkt_naznacheniya;
    this.vremya_otpravleniya = vremya_otpravleniya;
    this.den_reisa = den_reisa;
    this.dlitelnost_poleta =dlitelnost_poleta;
    this.stoimost_bileta = stoimost_bileta;
    }
    </SCRIPT>
    </HEAD>

    <BODY>
    <script>
    // Создание массива 10 объектов
    var aviareisi = new Array(10);
    aviareisi[0] = new aviareis ("Париж", 9, "вт", 2, 250);
    aviareisi[1] = new aviareis ("Лондон", 4, "сб", 3, 300);
    aviareisi[2] = new aviareis ("Ванкувер",11, "пн", 8, 500);
    aviareisi[3] = new aviareis ("Загреб", 21, "чт", 1, 300);
    aviareisi[4] = new aviareis ("Нагано", 16, "пт", 9, 400);
    aviareisi[5] = new aviareis ("Калгари", 7, "чт", 7, 450);
    aviareisi[6] = new aviareis ("Братислава", 23, "ср", 2, 150);
    aviareisi[7] = new aviareis ("Хельсинки", 6, "вт", 1, 300);
    aviareisi[8] = new aviareis ("Москва", 14, "пт", 3, 450);
    aviareisi[9] = new aviareis ("София", 5, "пн", 6, 300);

    //Функция вывода свойств объекта
    function Vivod (str)
    {  
    document.write('<table border="1" bordercolor="000000" align=center>');
    document.write ('<tr><th>пункт назначения<th>время отправления<th>дни (недели) выполнения рейса<th>длительность полета<th>стоимость билета</tr>');
    for (var i = 0; i < 10; i++)
    document.write ('<tr><td>'+str[i].punkt_naznacheniya+'<td>'+str[i].vremya_otpravleniya+'<td>'+str[i].den_reisa+'<td>'+str[i].dlitelnost_poleta+'<td>'+ str[i].stoimost_bileta+'</tr>');
    document.write('</table>');
    }
    // Вывод свойств объекта
    Vivod (aviareisi);
    </SCRIPT>



    <ol>
    <FONT SIZE="3" COLOR="blue">Сортировка:</FONT>
    <li>по алфавиту (по названиям пунктов назначения);
    <li>по возрастанию стоимостей билетов;
    <li>поместить в начале рейсы, пункт назначения которых ввел
    пользователь;
    <li>по дням недели.
    </ol>


    <form
    name="form" id="form" method="get"
    <label>Введите число:
    <input type="text" id="string" name="string" value="" /></label>
    <br />
    <input type="button" value="Сортировка" onclick="Vivod_rez ()" />
    <br />
    </form>

    <script>
    function Vivod_rez ()
    {
    var str = document.form.string.value;

    //Создание массива, элементами которого являются пункт назначения
    var pn = new Array();
    for (var i=0; i<10; i++)
    {  
    pn[i] = aviareisi[i].punkt_naznacheniya;
    }

    document.write ("<br />");

    // Сортировка по пункт назначения
    if (str == 1)
    {
    var i, j, k;
    var x;
    var str_izm;
    for(i=0; i < 10; i++)
    {  
    k = i;
    x = pn[i];
    str_izm = aviareisi[i];

    for(j = i+1; j < 10; j++)        

    if (pn[j].charCodeAt(0) < x.charCodeAt(0) )
    {
    k = j;
    x = pn[j];                   
    str_izm = aviareisi[j];
    }
    pn[k] = pn[i];
    pn[i] = x;                       
    aviareisi[k] = aviareisi[i];
    aviareisi[i] = str_izm;
    }
    }

    // Создание массива, элементами которого являются стоимостей билетов

    var sb = new Array();
    for (var i=0; i<10; i++)
    {  
    sb[i] = aviareisi[i].stoimost_bileta;
    }


    document.write ("<br />");

    // Сортировка по возрастанию стоимостей билетов
    if (str == 2)

    {
    var i, j, k;
    var x;
    var str_izm;
    for(i=0; i < 10; i++)
    {  
    k = i;
    x = sb[i];
    str_izm = aviareisi[i];

    for(j = i+1; j < 10; j++)            
    if (sb[j] < x )
    {
    k = j;
    x = sb[j];                     
    str_izm = aviareisi[j];
    }
    sb[k] = sb[i];
    sb[i] = x;                     
    aviareisi[k] = aviareisi[i];
    aviareisi[i] = str_izm;
    }
    }

    //Создание массива, элементами которого является рейсы
    var ppn = new Array();
    for(var q=0; q<10; q++)
    {
    ppn[q]=aviareisi[q].punkt_naznacheniya;
    }

    document.write ("<br />");
    // Сортировка по рейсам, пункт назначения которых ввел пользователь
    if (str == 3)
    {
    var punkt1 = prompt('Введите пункт назначения', '');

    var i;

    var str_one;
    for(i=0; i < 10; i++)
    {  
    str_one = aviareisi[0];

    if(ppn[i]==punkt1)
    {
    aviareisi[0]=aviareisi[i];
    aviareisi[i]=str_one;
    }


    }
    }
    document.write ("<br />");



    //Создание массива, элементами которого являются дни недели
    var dn = new Array();
    var dr = new Array();
    dn[0] = "пн";
    dn[1] = "вт";
    dn[2] = "ср";
    dn[3] = "чт";
    dn[4] = "пт";
    dn[5] = "сб";
    dn[6] = "вс";
    for (var y=0; y<10; y++)
    {
    dr[y]==aviareisi[y].den_reisa;
    }
    document.write ("<br />");

    // Сортировка
    if (str == 4)
    {

    //???

    }



    Vivod (aviareisi);
    }
    </SCRIPT>
    </BODY>
    </HTML>
     
  2. Gisma

    Gisma Гость

    присвой каждому дню значение от 0 до 6 (пн- 0 , вт - 1) и отсортируй в нужном тебе порядке
     
  3. fleur

    fleur Гость

    Gisma, спасибо большое! Ступила :)
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей