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

  • Автор темы fleur
  • Дата начала
Статус
Закрыто для дальнейших ответов.
F

fleur

Гость
#1
1. Определить конструктор объектов "авиарейсы"
Свойства: пункт назначения; время отправления;
дни (недели) выполнения рейса; длительность полета;
стоимость билета.
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[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>
 
G

Gisma

Гость
#2
присвой каждому дню значение от 0 до 6 (пн- 0 , вт - 1) и отсортируй в нужном тебе порядке
 
Статус
Закрыто для дальнейших ответов.