Опубликован: 19.10.2006 | Уровень: для всех | Доступ: платный
Лекция 5:

Строки, числа и массивы

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >

Массивы

Массив является по сути списком элементов. Каждый элемент массива может быть чем угодно, но обычно они связаны друг с другом. Если, например, необходимо отследить 30 студентов класса, то можно создать массив студентов:

var students = new Array();
students[0] = 'Sam';
students[1] = 'Joe';
students[2] = 'Sue';
students[3] = 'Beth';

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

var students = ['Sam', 'Joe', 'Sue', 'Beth'];

Этот код создает точно такой же массив, что и предыдущий пример, но, как можно видеть, он значительно более компактный и ничуть не сложнее для понимания. Скобки ( [ и ] ) в этом примере сообщают коду, что будет создан массив. Простая запись var students = []; является тем же самым, что и запись var students = new Array();. Правда, некоторые люди считают, что использование слова Array более наглядно, чем запись [], поэтому можно использовать любой метод записи.

Что можно теперь сделать с этим массивом студентов? Чтобы обратиться к любому элементу массива, необходимо знать его индекс. В первом примере можно видеть, что в скобках находятся числа (0-3). Это индексы. Если требуется узнать имя третьего студента, то надо будет написать alert(students[2]);. Почему 2, а не 3? Массивы в JavaScript начинают индексацию с 0, а не с 1. Поэтому первым элементом в нашем массиве будет students[0], вторым - students[1], сотым - students[99], и т.д. Для этого не существует никакой реальной причины, просто так устроен JavaScript и многие другие языки программирования. Некоторые другие языки используют в качестве первого индекса 1.

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

var students = ['Sam', 'Joe', 'Sue', 'Beth'];
var suffixes = ['1st', '2nd', '3rd', '4th'];

for(var i=0; i<students.length; i++){
  alert(suffixes[i]+' студент --  '+students[i]);
}

Важный момент, который необходимо знать о массивах, состоит в том, что каждый элемент массива может содержать любой произвольный объект. В этих примерах каждый элемент массива является строкой, но они могут быть также числами, объектами, функциями, даже другими массивами. Электронная таблица (такая, как Excel ) является хорошим примером массива, содержащего другие массивы. Прежде всего имеется массив столбцов. Каждый столбец будет в свою очередь содержать в себе массив строк. Этот массив создается точно таким же образом, как и массив students:

var spreadsheet = [
  ['A1', 'B1', 'C1', 'D1'],
  ['A2', 'B2', 'C2', 'D2'],
  ['A3', 'B3', 'C3', 'D3'],
  ['A4', 'B4', 'C4', 'D4']
];

Переносы строк в JavaScript обычно не имеют значения. В этом примере переносы строк используются для придания коду большей наглядности и не влияют на код никаким образом.

Можно видеть, что здесь имеется 5 массивов. Четыре внутренних массива (или вложенных массива) содержатся в одном большом массиве, spreadsheet. Если потребуется узнать значение на пересечении третьего столбца и второй строки, то можно написать:

var col2 = spreadsheet[1];
alert(col2[2]);

// или 

alert(spreadsheet[1][2]);

Оба фрагмента кода делают одно и то же, выводят значение " C2 ".

< Лекция 4 || Лекция 5: 12345 || Лекция 6 >
Елена Сапегова
Елена Сапегова

После прохождения теоретической части пришло письмо об окончании теоретической части курса, будет ли практическая часть?

Рустам Рахимов
Рустам Рахимов

Пол часа искал в интеренете, как что работает. Такое чувство что автор пишет для людей которые уже знают js, или просто хвастается своими знаниями. Конструкция формы непонятна. И можно было бы в кратце написать, что такое событие которое используют. Сорершенно не понятно как работает форма, и как брать из нее значение. 

function Complete() {

    var x = "Имя: " + document.tutform.firstname.value;

alert(x);

} - Так брать значение из формы tutform, firstname-получаем значение из имени. 

<INPUT TYPE="button" VALUE="Готово" onClick="Complete();"> - Нужно к кнопке прописать событие, при нажатие на кнопку готово, чтобы возвращалось значение с помощью функции. А так ничего не работает, и смысла учить нету, если не знать почему не работает.

 


( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.8993103368072watchdog( )../bootstrap.inc:0
23.8995103370552module_invoke( )../bootstrap.inc:967
33.8996103372408call_user_func_array ( )../module.inc:462
43.8996103372744devel_watchdog( )../module.inc:462
53.8997103373592decode_entities( )../devel.module:382
63.8997103375512drupal_error_handler( )../devel.module:340
73.8997103379120watchdog( )../common.inc:663
83.8998103381200module_invoke( )../bootstrap.inc:967
93.8998103383056call_user_func_array ( )../module.inc:462
103.8998103383392devel_watchdog( )../module.inc:462
113.8998103384088decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.8993103368072watchdog( )../bootstrap.inc:0
23.8995103370552module_invoke( )../bootstrap.inc:967
33.8996103372408call_user_func_array ( )../module.inc:462
43.8996103372744devel_watchdog( )../module.inc:462
53.8997103373592decode_entities( )../devel.module:382
63.8997103375512drupal_error_handler( )../devel.module:340
73.8997103379120watchdog( )../common.inc:663
83.8998103381200module_invoke( )../bootstrap.inc:967
93.8998103383056call_user_func_array ( )../module.inc:462
103.8998103383392devel_watchdog( )../module.inc:462
113.8998103384088decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.8993103368072watchdog( )../bootstrap.inc:0
23.8995103370552module_invoke( )../bootstrap.inc:967
33.8996103372408call_user_func_array ( )../module.inc:462
43.8996103372744devel_watchdog( )../module.inc:462
53.8997103373592decode_entities( )../devel.module:382
63.9005103375704drupal_error_handler( )../devel.module:340
73.9005103379392watchdog( )../common.inc:663
83.9005103381472module_invoke( )../bootstrap.inc:967
93.9005103383328call_user_func_array ( )../module.inc:462
103.9005103383664devel_watchdog( )../module.inc:462
113.9006103384464decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.8993103368072watchdog( )../bootstrap.inc:0
23.8995103370552module_invoke( )../bootstrap.inc:967
33.8996103372408call_user_func_array ( )../module.inc:462
43.8996103372744devel_watchdog( )../module.inc:462
53.8997103373592decode_entities( )../devel.module:382
63.9005103375704drupal_error_handler( )../devel.module:340
73.9005103379392watchdog( )../common.inc:663
83.9005103381472module_invoke( )../bootstrap.inc:967
93.9005103383328call_user_func_array ( )../module.inc:462
103.9005103383664devel_watchdog( )../module.inc:462
113.9006103384464decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.9012103368616watchdog( )../bootstrap.inc:0
23.9012103370696module_invoke( )../bootstrap.inc:967
33.9012103372552call_user_func_array ( )../module.inc:462
43.9012103372888devel_watchdog( )../module.inc:462
53.9013103373592decode_entities( )../devel.module:382
63.9013103375512drupal_error_handler( )../devel.module:340
73.9013103379120watchdog( )../common.inc:663
83.9013103381200module_invoke( )../bootstrap.inc:967
93.9013103383056call_user_func_array ( )../module.inc:462
103.9013103383392devel_watchdog( )../module.inc:462
113.9014103384088decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.9012103368616watchdog( )../bootstrap.inc:0
23.9012103370696module_invoke( )../bootstrap.inc:967
33.9012103372552call_user_func_array ( )../module.inc:462
43.9012103372888devel_watchdog( )../module.inc:462
53.9013103373592decode_entities( )../devel.module:382
63.9013103375512drupal_error_handler( )../devel.module:340
73.9013103379120watchdog( )../common.inc:663
83.9013103381200module_invoke( )../bootstrap.inc:967
93.9013103383056call_user_func_array ( )../module.inc:462
103.9013103383392devel_watchdog( )../module.inc:462
113.9014103384088decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.9012103368616watchdog( )../bootstrap.inc:0
23.9012103370696module_invoke( )../bootstrap.inc:967
33.9012103372552call_user_func_array ( )../module.inc:462
43.9012103372888devel_watchdog( )../module.inc:462
53.9013103373592decode_entities( )../devel.module:382
63.9018103375704drupal_error_handler( )../devel.module:340
73.9018103379392watchdog( )../common.inc:663
83.9018103381472module_invoke( )../bootstrap.inc:967
93.9019103383328call_user_func_array ( )../module.inc:462
103.9019103383664devel_watchdog( )../module.inc:462
113.9019103384440decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.9012103368616watchdog( )../bootstrap.inc:0
23.9012103370696module_invoke( )../bootstrap.inc:967
33.9012103372552call_user_func_array ( )../module.inc:462
43.9012103372888devel_watchdog( )../module.inc:462
53.9013103373592decode_entities( )../devel.module:382
63.9018103375704drupal_error_handler( )../devel.module:340
73.9018103379392watchdog( )../common.inc:663
83.9018103381472module_invoke( )../bootstrap.inc:967
93.9019103383328call_user_func_array ( )../module.inc:462
103.9019103383664devel_watchdog( )../module.inc:462
113.9019103384440decode_entities( )../devel.module:382