Сортировка на JS
Свойства: пункт назначения; время отправления;
дни (недели) выполнения рейса; длительность полета;
стоимость билета.
2. В скрипте создать массив из 10-ти объектов, явно указав в
аргументах конструктора значения всех свойств.
3. Сформировать и вывести в HTML-документе таблицу (список)
свойств авиарейсов.
4. В диалоге с пользователем выяснить по какому из следующих
критериев нужно упорядочить список.
- по алфавиту (по названиям пунктов назначения);
- по возрастанию стоимостей билетов;
- поместить в начале рейсы, пункт назначения которых ввел
пользователь;
- по дням недели.
5. Отсортировать массив объектов по выбранному критерию.
6. Вывести в том же HTML-документе отсортированный
список (таблицу).
<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.punkt_naznacheniya+'<td>'+str.vremya_otpravleniya+'<td>'+str.den_reisa+'<td>'+str.dlitelnost_poleta+'<td>'+ str.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 = aviareisi.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;
str_izm = aviareisi;
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;
pn = x;
aviareisi[k] = aviareisi;
aviareisi = str_izm;
}
}
// Создание массива, элементами которого являются стоимостей билетов
var sb = new Array();
for (var i=0; i<10; i++)
{
sb = aviareisi.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;
str_izm = aviareisi;
for(j = i+1; j < 10; j++)
if (sb[j] < x )
{
k = j;
x = sb[j];
str_izm = aviareisi[j];
}
sb[k] = sb;
sb = x;
aviareisi[k] = aviareisi;
aviareisi = 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==punkt1)
{
aviareisi[0]=aviareisi;
aviareisi=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>
Кто может помочь с сортировкой по дням недели? :confused:
обозначь первый день недели через 0(или 1 - как тебе удобней),
а последний день соответственно 6 (или 7).
сделай вспомагательный массив строк dayname в нем под
соответствующем индексом сохранишь имя недели,
а в конструкторе обазначай день недели символически через цифры.
мне кажется проблемы таким образом отпадут
OlgaKr, да-да, спасибо! :)