«Единственный способ творить великие дела – это любить то, что ты делаешь»
JavaScript
site.komp36.ru Создание сайтов. Твой сайт фотографа Что есть на сайте? Несколько фото галерей: свадебная, постановочная съемка, love story, детские фото. Договор на фотосъемку, прайс-лист.
site.komp36.ru Продающий лендинг «Установка и продажа окон» Установка и продажа окон, установка дверей, перегородок. Одностраничный продающий сайт. Заявки прямо с сайта
site.komp36.ru Универсальный лендинг. Любая тема сайта - 4900 руб. Лендинг адаптируется под любую тему: ремонт, отделка, продажа окон, дверей, лестниц, мебели и многое другое
site.komp36.ru Создание сайтов. Сайт сервисного центра. Сайт компании. Новости и отзывы. Несколько прайс-листов – под каждый отдельная страница. Возможность размещения статей


Игра «Морской Бой» на JavaScript: Простая Игра и Игра для Двоих



Здесь Вы познакомитесь с понятием параллельные массивы и научитесь с ними работать.

Мы продолжим работать с этим кодом, который, напомним: определяет максимальное число в массиве и выдает индексы (позиции) этого числа.

На этой странице исходная задача будет усложнена.

Условие задачи и немного теории:

Есть два числовых массива:

var kpd = [42, 70, 49, 68, 70, 61, 43, 47, 70, 35]
var cost = [22, 24, 25, 21, 22, 23, 23, 26, 23, 24]

Представим следующее:

kpd - массив содержащий значения КПД (коэффициента полезного действия) различных модификаций какого-либо двигателя.

cost - массив, повторяющий структуру массива kpd и содержащий стоимость этих модификаций двигателя.

Массивы kpd и cost называются параллельными, так как для каждого значения из kpd есть соответствующее значение из массива cost с тем же индексом.

То есть значению 42 из kpd соответствует значение 22 из cost - у обоих индекс 0. Индекс 1 - это значения 70 и 24 и т.д.

Нужно сделать следующее:

1. Узнать максимальное значение КПД двигателя из массива kpd. А также индексы (позиции) этого значения (это мы уже делали здесь).

Максимальный КПД двигателя равен 70.

Это значение занимает следующие позиции: 1,4,8.

2. Согласно этим индексам проанализировать соответствующие значения ЦЕНЫ из массива cost и определить минимальное из них.

То есть нужно выяснить, какой двигатель с максимальным КПД (это массив kpd) имеет минимальную стоимость производства (массив cost).

Минимальная цена при максимальном КПД: 22.



Параллельные массивы - Исходный код

Ниже размещен код, от которого мы будем отталкиваться - именно о нем шла речь в начале страницы.

Фрагмент кода

<script type="text/javascript">

var kpd = [42, 70, 49, 68, 70, 61, 43, 47, 70, 35];
var cost = [22, 24, 25, 21, 22, 23, 23, 26, 23, 24];

var i = 0;
var maxi = 0;

while (i < kpd.length)
{
if(kpd[i] > maxi)
{
maxi = kpd[i]
}
i ++;
}

document.write("Максимальный КПД двигателя равен " + maxi);

 

var empty = [];

for(i = 0; i < kpd.length; i++)
{
if(kpd[i] == maxi)
{
empty.push(i);
}
}

document.write("<br /> Это значение занимает следующие позиции: " + empty);

</script>

Результат

Результат - Исходный код

Максимальный КПД двигателя равен 70
Это значение занимает следующие позиции: 1,4,8

Итак, для начала мы имеем максимальный КПД равный 70 и номера позиций (индексов) этого значения в массиве kpd - 1,4 и 8.

  • Подробнее о том, как работает этот фрагмент кода можно узнать здесь.

Работа с параллельными массивами в Javascript

Теперь нам предстоит выяснить: как сопоставить элементы двух параллельных массивов между собой?

А в нашем случае узнать: какому из максимальных значений КПД (число 70 из массива kpd) соответствует минимальная стоимость двигателя (выбирается меньшее из 3-х значений массива cost с индексами 1,4 и 8).

Фрагмент кода

<script type="text/javascript">

var kpd = [42, 70, 49, 68, 70, 61, 43, 47, 70, 35];
var cost = [22, 24, 25, 21, 22, 23, 23, 26, 23, 24];

var i = 0;
var maxi = 0;

while (i < kpd.length)
{
if(kpd[i] > maxi)
{
maxi = kpd[i]
}
i ++;
}

document.write("Максимальный КПД двигателя равен " + maxi);

 

var empty = [];
var mini = Infinity;

for(i = 0; i < kpd.length; i++)
{
if(kpd[i] == maxi)
{
empty.push(i);
if (cost[i] < mini)
{
mini = cost[i]
}

}
}

document.write("<br /> Это значение занимает следующие позиции: " + empty);

document.write("<br /> Минимальная цена при максимальном КПД: " + mini);

</script>

Результат

Результат - Работа с параллельными массивами в Javascript

Максимальный КПД двигателя равен 70
Это значение занимает следующие позиции: 1,4,8
Минимальная цена при максимальном КПД: 22

Комментарии к коду (красным помечены изменения в исходном коде).

  • Вводим переменную mini и присваиваем ей значение Infinity (что обозначает бесконечность) var mini = Infinity. С бесконечностью будут сравниваться нужные значения массива cost с целью поиска минимального.

    Если предположить, что нам не известен диапазон значений массива cost, то их лучше сравнивать именно с бесконечностью.

    Но если известен, то, например, в нашем случае, можно было бы переменной mini присвоить значение 100.

  • Теперь, после того, как в массив empty занесен индекс очередного максимального значения КПД empty.push(i), мы используем этот индекс для получения соответствующего значения из массива cost.

    И если это значение меньше текущего значения переменной mini, последней оно и присваивается.
    if (cost[i] < mini){mini = cost[i]}

    Подробнее о том, что происходит в примере...

    1) Итак, сначала был определен индекс первого максимального значения 70 из массива kpd (этот число 1, которое заносится в массив empty).

    2) Затем берется значение из массива cost также с индексом 1, то есть 24.

    3) Далее идет сравнение: если 24 < Infinity, то число 24 присваивается переменной mini, то есть теперь ее текущее значение равно 24.

    4) Затем определяется индекс следующего максимального значения 70 из массива kpd - он равен 4.

    5) Индексу под номером 4 соответствует число 22 из массива cost.

    6) Снова сравнение: 22 < 24, поэтому теперь mini = 22.

    7) Последний индекс, с которым мы работаем равен 8 - это значение 23 из массива cost.

    8)Но теперь условие 23 < 22 ложно, поэтому переменная mini не меняет своего значения и по прежнему mini = 22.

  • Таким образом, мы имеем минимальную цену при максимальном КПД двигателя, равную 22.

Параллельные массивы - Упрощаем код

Если, например, нам не нужны номера индексов максимального значения КПД в массиве, то их можно не заносить в массив empty, тем самым немного упростив код.

Фрагмент кода

<script type="text/javascript">

var kpd = [42, 70, 49, 68, 70, 61, 43, 47, 70, 35];
var cost = [22, 24, 25, 21, 22, 23, 23, 26, 23, 24];

var i = 0;
var maxi = 0;

while (i < kpd.length)
{
if(kpd[i] > maxi)
{
maxi = kpd[i]
}
i ++;
}

document.write("Максимальный КПД двигателя равен " + maxi);

 

/* Исключаем этот фрагмент кода: var empty = []; */
var mini = 100;

for(i = 0; i < kpd.length; i++)
{
if(kpd[i] == maxi)
{
/* Исключаем этот фрагмент кода: empty.push(i); */
if (cost[i] < mini)
{
mini = cost[i]
}
}
}

document.write("<br /> Минимальная цена при максимальном КПД: " + mini);

</script>

Результат

Результат - Упрощаем код

Максимальный КПД двигателя равен 70
Минимальная цена при максимальном КПД: 22

Обратите внимание: здесь мы уже работаем со значением переменной mini = 100 (в предыдущем примере работали с Infinity).

Параллельные массивы - Добавляем функции

Код из предыдущего примера можно оптимизировать, используя функции.

Фрагмент кода

<script type="text/javascript">

var kpd = [42, 70, 49, 68, 70, 61, 43, 47, 70, 35];
var cost = [22, 24, 25, 21, 22, 23, 23, 26, 23, 24];

function max_kpd(kpd)
{

var i = 0;
var maxi = 0;

while (i < kpd.length)
{
if(kpd[i] > maxi)
{
maxi = kpd[i]
}
i ++;
}
return maxi;
}

var best_kpd = max_kpd(kpd);

document.write("Максимальный КПД двигателя равен " + best_kpd);

function min_cost(kpd,cost)
{

var mini = Infinity;

for(i = 0; i < kpd.length; i++)
{
if(kpd[i] == best_kpd)
{
if (cost[i] < mini)
{
mini = cost[i]
}
}
}
return mini;
}

var best_cost = min_cost(kpd,cost);

document.write("<br /> Минимальная цена при максимальном КПД: " + best_cost);

</script>

Результат

Результат - Параллельные массивы - Добавляем функции

Максимальный КПД двигателя равен 70
Минимальная цена при максимальном КПД: 22

Теперь функции max_kpd и min_cost можно повторно использовать для определения максимального КПД и минимальной стоимости других двигателей.

Читайте также...

site.komp36.ruТвой сайт фотографа. Создание сайтов Что есть на сайте? Несколько фото галерей: свадебная, постановочная съемка, love story, детские фото. Договор на фотосъемку, прайс-лист.
site.komp36.ru Акция Как начать свое дело? Свой сайт «Укладка плитки» 9 000 руб. Лендинг адаптируется под любой вид отделочных работ, продажу товаров или услуг. Сайт поможет найти новых клиентов
site.komp36.ru Акция Продающий лендинг «Установка и продажа окон» 9 000 руб. Одностраничный продающий сайт. Установка и продажа окон, установка дверей, перегородок. Заявки прямо с сайта

Отзывы и комментарии:

Комментариев нет...

Оставить отзыв:

Ваше Имя:

Текст комментария:

Ответьте на вопрос:

Сколько дней в Високосном году?


Задачи по JavaScript
Тематические публикации
site.komp36.ru Как начать свое дело? Свой сайт «Укладка плитки» 9 000 руб. Лендинг адаптируется под любой вид отделочных работ, продажу товаров или услуг. Сайт поможет найти новых клиентов
site.komp36.ru Продающий лендинг «Установка и продажа окон» 9 000 руб. Одностраничный продающий сайт. Установка и продажа окон, установка дверей, перегородок. Заявки прямо с сайта
Популярные заметки
Последние заметки