ресурс для начинающих веб-разработчиков
комплексные веб-услуги по созданию сайтов

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб-сайтов под "ключ".

Разработка отдельных фрагментов сайтов, консультации по вопросам верстки веб-страниц и веб-программирования.

Параллельные массивы. Многомерные масссивы. Копирование массива. Свойства массива Array

Массивы

Параллельные массивы

Рассморенные ранее массивы, являются одномерными массивами. Они представляют собой таблицу из одного столбца. А теперь давайте сгенерируем два массива, в которых отразится продажа автомобилей в автосалоне в первом полугодии 2008 года.

Месяц [ i ] Количество продаж
январь [0] 80
февраль [1] 110
март [2] 140
апрель [3] 160
май [4] 100
июнь [5] 90

Cоздаем первый массив и добавим к нему второй. Получились параллельные массивы.

Первый массив Второй массив
myavto=new Array(6)
myavto[0]="январь";
myavto[1]=" февраль";
myavto[2]=" март";
myavto[3]=" апрель";
myavto[4]=" май";
myavto[5]=" июнь";
myavto1=new Array()
myavto1[0]=80;
myavto1[1]=110;
myavto1[2]=140;
myavto1[3]=160;
myavto1[4]=100;
myavto1[5]=90
;

Пишем скрипт.

<script language="JavaScript">
myavto=new Array(6)
myavto[0]="январь ";
myavto[1]=" февраль ";
myavto[2]=" март ";
myavto[3]=" апрель ";
myavto[4]=" май ";
myavto[5]=" июнь ";

myavto1=new Array()
myavto1[0]=80;
myavto1[1]=110;
myavto1[2]=140;
myavto1[3]=160;
myavto1[4]=100;
myavto1[5]=90;
for(i=0;i<6;i++){
alert(myavto[i]+myavto1[i])
document.write(myavto[i]+myavto1[i]+"<br>");
}
</script>

В окне веб-браузера это будет выглядеть ТАК.

Используя описанный принцип, можно добавть любое количество дополнительных массивов, паралельных текущим массивам.

Рассмотрим еще один пример. Давайте создадим таблицу с данными о некоторых планетах Солнечной системы.

Планета Расстояние до Солнца Диаметр
Меркурий 52 млн.км 4 880 км
Венера 108 млн.км 12 100 км
Земля 149 млн.км 12 750 км
Марс 228 млн.км 6 800 км

Для решения этой задачи создадим три параллельных массива planets, gonc и crug. Через окно информации сообщим пользователю индекс планет и предложим ввести индекс интересующей планеты в диалоговое окно.

<script language="JavaScript">
alert("Для получения информации о планетах Солнечной системы, введите в диалоговое окно индекс интересующей вас планеты: 0-Меркурий, 1-Венера, 2-Земля, 3-Марс")
planets=new Array()
planets[0]="Меркурий - ";
planets[1]=" Венера - ";
planets[2]=" Земля - ";
planets[3]=" Марс - ";


gonc=new Array()
gonc[0]=" до Солнца 52 млн.км, ";
gonc[1]=" до Солнца 108 млн.км, ";
gonc[2]=" до Солнца 149 млн.км, ";
gonc[3]=" до Солнца 228 млн.км, ";

crug=new Array()
crug[0]="диаметр планеты 4 880 км ";
crug[1]="диаметр планеты 12 100 км";
crug[2]="диаметр планеты 12 750 км";
crug[3]="диаметр планеты 6 800 км";

for(i=0;i<4;i++){
i=prompt("Введите индекс планеты", "")

document.write(mySharh[i]+gonc[i]+crug[i]+"<br>")
break
}
</script>

В окне веб-браузера это будет выглядеть ТАК.

Многомерные масссивы

Элементы массива могут содержать данные различных типов, т.ч. и объекты. Если массив объект, то значит массив может содержать массив. Если в качестве элементов некоторого одномерного массива создать массивы, то получится двухмерный массив. Обращение к элементам такого массива происходит в соответствии со следующим синтаксисом:

имя_массива[индекс_уровня1] [индекс_уровня2]

Если массив имеет размерность, больше двух, то синтаксис обращения к массивам имеет аналогичный синтаксис: следует добавить нужное количество квадратных скобок, заключающих нужные индексы.

Типичным примером двухмерного массива является массив опций меню. У такого меню есть горизонтальная панель с опциями, называемая главным меню. Некоторым опциям главного меню соответствуют раскрывающиеся вертикальные подменю со своими опциями. Вот структура подобной конструкции.

Структура массива

<script language="JavaScript">

avto = new Array("Автомобили")

avto[0] = new Array("Россия")

avto[0][0] = new Array("ВАЗ")

avto[0] [0][0]= new Array("Нива", "Kalina", "Priora")

avto[0] [0] [0][0]= new Array("Нива")

avto[0] [0][0][1]= new Array("Kalina")

avto[0] [0][0][2]= new Array("Priora")

avto[1] = new Array("Иномарки")

avto[1][0]= new Array("Nissan", "Toyota")

avto[1] [0][0]= new Array("Primera", "Almera", "X-trail")

avto[1] [0] [0][0]= new Array("Primera")

avto[1] [0][0] [1]= new Array("Almera")

avto[1] [0][0] [2]= new Array("X-trail")

avto[1][0] [1]= new Array("Corsa", "Avensis","Camry" )

avto[1][0] [1] [0]= new Array("Corsa")

avto[1][0] [1] [1]= new Array("Avensis")

avto[1][0] [1] [2]= new Array("Camry")

</script>

Проверим работу скрипта. Для того, чтобы получить информацию о наличии Российских и иностранных автомобилей надо вставить в скрипт следующий алгоритм:

for(i=0;i<3;i++){
i=prompt("Введите индекс автомобиля: производства РФ-'0', иномарка- '1'", ""
) document.write(avto[i]+"
")
break
}

В окне веб-браузера это будет выглядеть ТАК.

Копирование массива

Иногда требуется создать копию массива, чтобы сохранить исходные данные и предохранить их от последующих модификаций. Например, метод сортировки элементов массива, который рассмотрен ниже, изменяет исходный массив. Однако для копирования массива недостаточно присвоить его другой переменной. Используя новую переменную и оператор присвоения, мы создаем лишь новую ссылку на прежний массив, а не новый массив.

planets=new Array()

a = planets//ссылка на массив planets

planets[3] = " Сатурн //изменение значения элемента с индексом 3

a[3] //значение равно " Сатурн ", т.е новому значению a[3]

В этом примере массивы planets и a совпадают.

Чтобы скопировать массив, то есть создать новый массив, элементы которого равны соответствующим элементам исходного, следует воспользоваться оператором цикла, в котором элементам нового массива присваиваются значения элементов исходного, например:

planets=new Array("Меркурий - ", " Венера - ", " Земля - ", " Марс - ")

a= new Array()//ссылка на массив planets

for (i=0; i<planets.length; i++) /*копирование значений массива planets в элементы массива а */

{

a[i] = planets[i]

}

Свойства массива Array

  • length — длина или, иными словами, количество элементов в массиве; целое число. Синтаксис:
  • имя_массива.length

    Поскольку индексация элементов массива начинается с нуля, индекс последнего элемента на единицу меньше длины массива. Это обстоятельство удобно использовать при добавлении к массиву нового элемента:

    planets[planets.length] = значение.

  • prototype — свойство (прототип), позволяющее добавить новые свойства и методы ко всем созданным массивам.
  • Например, следующее выражение добавляет свойство authorко всем уже созданным массивам:

    Array.prototype.author = "Петров"

    Если теперь вместо Array, prototype написать имя существующего массива, то можно изменить значение свойства author только для этого массива:

planets= new Array() // создание массива planets
gonc=new Array() // создание массива gonc
Array.prototype.author = "Петров" /* добавление прототипа
ко всем массивам */

planets.author = "Сидоров" /* изменение свойства author
для planets*/

gonc.author = "Иванов" /* изменение свойства author
для gonc */

Прототипу можно присвоить функции. При этом они пополнят множество методов объекта Array.

Например вычисление суммы элементов массива. Мы определяем функцию myplanet(), которая возвращает сумму элементов числового массива. В качестве параметра эта функция принимает массив. Затем создаем конкретный массив чисел. Наконец, присоединяем к прототипу массива новый метод Sum — определенную ранее функцию myplanet():

function myplanet(gonc){
var s = 0
for(i =0; i <=gonc.length -1; i++){
s = s +gonc[i]
}
return s
}
planets= new Array(2, 3, 4) // создаем массив planets из 3-х чисел

Array. prototype. Sum = myplanet /* присоединяем метод (около имени
функции скобки указывать не нужно) */


planets.Sum(planets) /* применяем метод Sum к массиву planets,
передавая его в качестве параметра */

Этот пример призван просто проиллюстрировать использование свойства prototype. Чтобы вычислить сумму элементов массива, достаточно написать следующее выражение:

s = myplanet(planets)
document.write("Сумма трех чисел = " +s)

В окне веб-браузера это будет выглядеть ТАК.