Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Двумерные массивы
 
 автор: Golovastik   (04.08.2010 в 00:26)   письмо автору
 
 

Читаю книгу по явескрипту, дошёл до 2-мерных массивов.
Там такой небольшой примерчик выводящий таблицу.



function display(table){
document.write("<table border=1>");
document.write('<th>Номер</th> <th>Наименование</th>');
document.write('<th>Номер модели</th> <th>Количество</th>');


for(x = 1; x<=3; x++){
document.write('<tr><td>',x,'</td>');
for(y = 0; y <=2; y++){
    document.write('<td>',table[x][y],'</td>');
   }
document.write('</tr>');
  }
document.write('</table>');
}

part1 = new Array('Тормозные колодки','39D48G',78);
part2 = new Array('Тормозные башмаки','7D9UK3',45);
part3 = new Array('Втулки','97WOST','14');

brakeParts = new Array('',part1,part2,part3);

display(brakeParts);




Не ясны пару моментов.

1)Если написать так:

 brakeParts = new Array(); //Это будет означать что мы создаём динамически  объект  brakeParts  класса Array


А вот это тчо тогда будет означать?

Вот это brakeParts = new Array('',part1,part2,part3); 


2)Объясните как работает это кусок:

for(x = 1; x<=3; x++){
document.write('<tr><td>',x,'</td>'); 
for(y = 0; y <=2; y++){
    document.write('<td>',table[x][y],'</td>'); //
   }
document.write('</tr>');
  }
document.write('</table>');
}


Заранее благодарю за скорый ответ.

  Ответить  
 
 автор: АЯ   (04.08.2010 в 01:33)   письмо автору
 
   для: Golovastik   (04.08.2010 в 00:26)
 

При объявлении массива можно:
1) только его определить
2) определить массив и указать его длину
3) определить, указать длину и дать значения всем элементам.
var A = new Array ();
//Парсер узнает, что:
1) A - массив
2) элементов в массиве A - пока нет, т.е. текущая длина массива - ноль.

var B = new Array (5);
//Парсер узнает, что:
1) B - массив
2) элементов в массиве B - пять штук, т.е. текущая длина массива - 5.

var C = new Array (2, 6, 7, 1);
//Парсер узнает, что:
1) C - массив
2) элементов в массиве C - четыре штуки, т.е. текущая длина массива - 4
3) элементы имеют следующие значения: C [0] = 2, C [1] = 6, C [2] = 7, C [3] = 1.

Можно ТО ЖЕ САМОЕ записать покороче:
var A = [];
var C = [2, 6, 7, 1];
Но будьте осторожны: запись var B = [5]; даст парсеру понять, что в массиве B всего ОДИН элемент, равный 5 (т.е. ТОЛЬКО длину массива при записи с использованием квадратных скобок задать НЕЛЬЗЯ).
-----

На второй вопрос отвечу так: если Вы дошли до 2-мерных массивов и спрашиваете - как работает оператор цикла и метод write, то Вам надо снова читать Ваш учебник с самого начала:-))

  Ответить  
 
 автор: Golovastik   (05.08.2010 в 00:53)   письмо автору
 
   для: АЯ   (04.08.2010 в 01:33)
 

1..Что такое парсер?

2. Вот это:

brakeParts = new Array('',part1,part2,part3);// создали многомерный массив массив


Чтоб создать многомерный массив, нужно внутри конструктора Array который принадлежит классу Array, прописать сами одномерные массивы созданные раннее?
Если это так, brakeParts - как знать сколько строк и столбцов я имею в этом массиве при таком объявлении.

brakeParts = new Array('',part1,part2,part3);// создали многомерный массив массив

  Ответить  
 
 автор: Golovastik   (05.08.2010 в 01:56)   письмо автору
 
   для: Golovastik   (05.08.2010 в 00:53)
 

Есть такой вариант.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>Тренировка</title></head>
<script type='text/javascript'>
//-------------------------------------------------------------
//----------------------2-мерный массив-------------------------
//-------------------------------------------------------------


function display(parametr_func){
    document.write("<table border=1>");
    document.write('<tr><td>Номер</td> <td>Наименование</td>');
    document.write('<td>Номер модели</td> <td>Количество</td></tr>');

    for(var i = 0; i < 3; i++){
        document.write('<tr><td>', i+1, '</td>');
        for(var j = 0; j < 3; j++){
            document.write('<td>', parametr_func[i][j], '</td>');
        }
        document.write('</tr>');
    }
    document.write("</table>");
}

part1 = ['Машина','BMW','555'];
part2 = ['Самолёт','TY-134','888'];
part3 = ['Телефон','Nokia N73','22'];

display(new Array(part1,part2,part3));

</script>
<body></body></html>


Как в таком случаи будет называться созданный массив в этой строке?
display(new Array(part1,part2,part3));

  Ответить  
 
 автор: АЯ   (05.08.2010 в 01:59)   письмо автору
 
   для: Golovastik   (05.08.2010 в 00:53)
 

1) Парсер - это программа, встроенная в браузер, коя интерпретирует написанный Вами код на Javascript'e в исполняемый.
Построчно и последовательно.

2) Что за книжку Вы читаете, а?
Там разве не написано, что в Javascripte в принципе НЕТ многомерных массивов?

Можно создать одномерный массив, элементы которого САМИ будут одномерными массивами.
Тогда получится виртуальный двумерный массив.
Строки и столбцы в таком виртуальном массиве - понятие тоже очень виртуальное.
Ферштейн?

Виртуальный двумерный массив можно создать 4-мя способами.
Способ ПЕРВЫЙ - сначала определяют первый (верхнего уровня) массив, а затем определяют массивы нижнего уровня, кои являются элементами первого.
var A = new Array (3);

A [0] = new Array (1, 2, 3);
A [1] = new Array (4, 5, 6);
A [2] = new Array (7, 8, 9);

Способ ВТОРОЙ - сначала определяют массивы нижнего уровня, а затем уже определяют массив верхнего уровня:
var B = new Array (1, 2, 3);
var C = new Array (4, 5, 6);
var D = new Array (7, 8, 9);

var A = new Array (B, C, D);

Способ ТРЕТИЙ - определяют все массивы СРАЗУ и ОДНОВРЕМЕННО:
var A = new Array (new Array (1, 2, 3), new Array (4, 5, 6), new Array (7, 8, 9));


Способ ЧЕТВЁРТЫЙ - сначала определяют верхний массив (как массив массивов), а затем определяют каждый из 9-ти элементов. Вот так:
var A = new Array (new Array (), new Array (), new Array ());

A [0] [0] = 1;
A [0] [1] = 2;
A [0] [2] = 3;

A [1] [0] = 4;
A [1] [1] = 5;
A [1] [2] = 6;

A [2] [0] = 7;
A [2] [1] = 8;
A [2] [2] = 9;

Разумеется, эти способы можно комбинировать. Например, так:
var B = new Array (1, 2, 3);
var A = new Array (B, new Array (4, 5, 6));
A [2] = new Array (7, 8);
A [2] [2] = 9;

Во всех случаях получится один и тот же виртуальный двумерный массив A.
Во всех случаях, чтобы добраться, например, до цифры 8, надо вызвать alert (A [2] [1]),
а чтобы получить цифру 3, надо прописать alert (A [0] [2])

Кроме того, массивы нижнего уровня, являющиеся элементами массива верхнего уровня, могут, во-первых, иметь РАЗНОЕ количество элементов. А во-вторых, вообще могут быть не массивами. Например, так
var E = [[1, 2], [3, 4, 5, 6], [7, 8, 9], 'Это_переменная_типа_String,_а_не_массив'];
Поэтому говорить о "столбцах" и "строках" НИЗЗЯ.
Ферштейн?
-----

В Вашем случае использован ВТОРОЙ способ - сначала определили массивы нижнего уровня part1, part2, part3, а затем определили массив верхнего уровня brakeParts, первый элемент которого (с нулевым номером) определён как переменная типа String (пустая строка).

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования