Jump to content
  • 0

Двумерные массивы


people2010
 Share

Question

Читаю книгу по явескрипту, дошёл до 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>');
}

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

Link to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 0
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>');

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

Это вложенный цикл. Вначале пробегаемся от 1 до 3 и выводим три строки таблицы с цифрами 1-3 в первой ячейке, затем внутри этого цикла пробегаемся от 0 до 2 и выводим содержимое массива table в колонках. В конце закрываем все теги. Вроде всё просто.

Link to comment
Share on other sites

  • 0

people2010

Как то раз делал матрицу, как раз на двумерных массивах. Т.е. тут суть в том, что ты сам прописываешь параметры и создаёшь свою матрицу. Зацени.

http://psywalker.ru/Forum/JS/Primitive/Zadachi/Matrica.html

Link to comment
Share on other sites

  • 0
Читаю книгу по явескрипту, дошёл до 2-мерных массивов.

Там такой небольшой примерчик выводящий таблицу.

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

Вы или не ту книгу читаете, или не в том порядке, или книга такая. Посмотрите раздел про создание массивов.

Link to comment
Share on other sites

  • 0

Согласен с s0rr0w, по моему вам стоит начать читать другую книгу ибо так как пишут в этой уже давно никто не делает.

document.write - это пипец... для таких целей надо использовать методы DOM

new Array() - так тоже никто не пишет, достаточно квадратных скобок

Вот так работать не будет сто процентов, потому что не создан элемент <tr>

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

В общем мой вам совет: бросайте эту книгу, забудте о потраченных деньгах (если купили) или потраченном траффике (если скачали).

Учитесь по этим урокам - и бесплатно и более полезно.

P.S.

Ах да, по теме сказать забыл...

Двумерный массив - это массив массивов, т.е. каждый элемент массива тоже массив. Вкладывать массивы в массивы можно до бесконечности. Бывают трехмерные, четырехмерные и т.п.

Про цикл в цикле все уже сказали.

Link to comment
Share on other sites

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

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

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

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

если писать new Array( параметры ), то значение слегка модифицируется в зависимости от количества параметров.

1) ели параметров нет, т.е. написать new Array(); то будет создан пустой массив.

2) если параметр один (должно быть целое положительное число), то будет создан массив, длина которого равна параметру, т.е. new Array(7); создаст массив длиной семь.

3) если параметров два или больше, то будет создан массив, длина которого равна количеству параметров, напр, new Array(7,8); создаст массив длиной два.

В приведенном примере:

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

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

 for(x = 1; x<=3; x++){
document.write('<tr><td>',x,'</td>');

заменить на:

 for(x = 0; x<3; x++){
document.write('<tr><td>',x+1,'</td>');

Link to comment
Share on other sites

  • 0

Есть такой вариант.

<!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));

Edited by people2010
Link to comment
Share on other sites

  • 0
Есть такой вариант.

<!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>');

[b]for(var i = 0; i < 3; i++)[/b]{
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>

Пару замечаний немножко не в тему:

1. Если таблица имеет фиксированное количество колонок, это нормально. Но количество строк надо уметь легко поменять. А поэтому я бы не делал цикл от нуля до трех, а до длины массива, т.е. выделенную строку лучше заменить на

for(var i = 0; i < parametr_func.length; i++){

2. Сам скрипт находится непонятно где, ни в хеде ни в боди. Я бы либо поместил его внутри тега body либо же разбил на две части - первая - определение функции, вторая - определение массива(-ов) и вызов функции. Вторую часть обязательно в тег body.

3. parametr_func по моему несколько неудачное название, хочется думать что это ссылка на функцию.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy