- •1. Основные понятия
- •3.4.2. Окно с сообщением и кнопками ok и Cancel
- •3.4.3. Окно с полем ввода и кнопками ok и Cancel
- •3.6. Типы данных и инициализация переменных. Определение типа данных переменной
- •3.7. Операторы JavaScript
- •3.7.1. Математические операторы
- •3.7.2. Операторы присваивания
- •3.7.3. Двоичные операторы
- •3.7.4. Оператор обработки строк
- •3.8. Преобразование типов данных
- •3.9. Специальные символы. Разбиение сообщения в диалоговом окне на несколько строк
- •3.10. Массивы
- •3.11. Функции. Разделение программы на фрагменты
- •3.11.1. Основные понятия
- •3.11.2. Расположение функций внутри html-документа
- •3.11.3. Рекурсия. Вычисление факториала
- •3.11.4. Глобальные и локальные переменные
- •3.12. Условные операторы. Выполнение блоков кода только при соответствии условию
- •3.12.1. Операторы сравнения
- •3.12.2. Оператор ветвления if...Else. Проверка ввода пользователя
- •3.12.3. Оператор ? Проверка числа на четность
- •3.12.4. Оператор выбора switch
- •3.13. Операторы циклов. Многократное выполнение блока кода
- •3.13.1. Цикл for
- •3.13.2. Цикл while
- •3.13.3. Цикл do...While
- •3.13.4. Оператор continue.
- •3.13.5. Оператор break. Прерывание цикла
- •3.14. Ошибки в программе
- •3.14.1. Синтаксические ошибки
- •3.14.2. Логические ошибки
- •3.14.3. Ошибки времени выполнения
- •3.15. Встроенные классы JavaScript
- •3.15.1. Основные понятия
- •3.15.2. Класс Global
- •3.15.3. Класс Number. Работа с числами
- •3.15.4. Класс String. Обработка строк
- •3.15.5. Класс Array. Работа с массивами и их сортировка
- •Многомерные массивы
- •Ассоциативные массивы. Перебор ассоциативных массивов
- •3.15.6. Класс Math. Использование математических функций
- •3.15.7. Класс Date. Получение текущей даты и времени. Вывод даты и времени в окне Web-браузера
Многомерные массивы
Многомерные массивы можно создать перечислением:
m_Mass = new Array(new Array("Один", "Два", "Три"), new Array("Четыре", "Пять", "Шесть"));
document.write(m_Mass[0][1]); // "Два"
или поэлементно:
m_Mass = new Array();
m_Mass[0] = new Array();
m_Mass[1] = new Array();
m_Mass[0][0] = "Один";
m_Mass[0][1] = "Два";
m_Mass[0][2] = "Три";
m_Mass[1][0] = "Четыре";
m_Mass[1][1] = "Пять";
m_Mass[1][2] = "Шесть";
document.write(m_Mass[1][2]); // "Шесть"
Обращение к элементу многомерного массива осуществляется с помощью двух индексов:
var m_Str = m_Mass[1][2];
Ассоциативные массивы. Перебор ассоциативных массивов
Основным отличием ассоциативных массивов от обычных является возможность обращения к элементу массива не по числовому индексу, а по индексу, представляющему собой строку.
m_Mass = new Array();
m_Mass["Один"] = 1;
m_Mass["Два"] = 2;
m_Mass["Три"] = 3;
document.write(m_Mass["Один"]); // 1
Как вывести все элементы массива? Ни один из методов класса Array не позволяет вывести элементы ассоциативного массива. Кстати, свойство length также не работает. По этой причине перебрать все элементы массива с помощью стандартного цикла for не получится.
Для этой цели существует специальный цикл for..in. Он имеет следующий формат:
for (<Переменная> in Экземпляр класса>)
{
<Тело цикла>
m_Mass = new Array();
m_Mass["Один"] = 1;
m_Mass["Два"] = 2;
m_Mass["Три"] = 3;
for (m_Name in m_Mass) {
// Переменной m_Name на каждой итерации присваивается
// строка-индекс ассоциативного массива
document.write(m_Name + " = " + m_Mass[m_Name] + "<BR>");
}
Ассоциативные массивы используются также для доступа к свойствам класса, вместо классической точки. Для получения длины строки ранее мы обращались к свойству length класса string следующим образом:
с_Str = new String("Hello, world");
document.write(с_Str.length); // 12
С помощью ассоциативных массивов обращение к свойству length будет выглядеть так:
с_Str = new String("Hello, world");
document.write(с_Str["length"]); // 12
3.15.6. Класс Math. Использование математических функций
Класс Math содержит математические константы и функции. Его использование не требует создания экземпляра класса.
Свойства:
E — е, основание натурального логарифма;
LN2 — натуральный логарифм 2;
LN10 — натуральный логарифм 10;
LOG2E — логарифм по основанию 2 от е;
LOG10E — десятичный логарифм от е;
PI — число Пи:
document.write(Math.PI); // 3.141592653589793
SQRT1_2 — квадратный корень из 0,5;
SQRT2 — квадратный корень из 2.
Методы:
abs() — абсолютное значение;
sin(), cos(), tan() — стандартные тригонометрические функции (синус, косинус, тангенс). Значение указывается в радианах;
asin(), acos(), atan() — обратные тригонометрические функции (арксинус, арккосинус, арктангенс). Значение возвращается в радианах;
ехр() — экспонента;
log() — натуральный логарифм;
pow(<Число>, <Степень>) —возведение <Числа> В <Степень>;
var m_Var=5;
document.write(Math.pow(m_Var, 2)); // 25 (5 в квадрате)
sqrt() — квадратный корень:
var m_Var=25;
document.write(Math.sqrt(m_Var)); // 5 (квадратный корень из 25)
round() — значение, округленное до ближайшего целого. Если первый знак после запятой от 0 до 4, то округление производится к меньшему по модулю целому, а в противном случае — к большему:
var m_Var1=2.499;
var m_Var2=2.5;
document.write(Math.round(m_Var1)); // округлено до 2
document.write(Math.round(m_Var2)); // округлено до 3
ceil() — значение, округленное до ближайшего большего целого:
var m_Var1=2.499;
var m_Var2=2.5;
document.write(Math.ceil(m_Var1)); // округлено до 3
document.write(Math.ceil(m_Var2)); // округлено до 3
floor() -— значение, округленное до ближайшего меньшего целого:
var m_Var1=2.499;
var m_Var2=2.5;
document.write(Math.floor(m_Var1)); // округлено до 2
document.write(Math.floor(m_Var2)); // округлено до 2
max(<Список чисел через запятую>) —максимальное значение из списка:
document.write(Math.max(3, 10, 6)); // 10
min(<Список чисел через запятую») —минимальное значение из списка:
document.write(Math.min(3, 10, 6)); // 3
random() — случайное число от 0 до 1:
document.write(Math.random()); // например, 0.9778613566886634
Для того чтобы получить случайное целое число от 0 до 9, нужно возвращаемое методом random() значение умножить на 9.9999, а затем округлить число до ближайшего меньшего целого при помощи метода floor():
var m_Var = Math.floor(Math.random()*9.9999);
document.write(m_Var);
Попробуйте несколько раз обновить Web-страницу. Число будем менять случайным образом в пределах от 0 до 9 включительно. Для чего это может пригодиться? Например, если есть четыре баннера 468x60, то их можно показывать случайным спосрбом.
var m_Var = Math.floor(Math.random()*3.9999);
document.write("<IMG src='banner" + m_Var + ".gif' width='480' height='60'>");
Четыре баннера с именами banner0.gif, bannerl.gif, banner2.gif и ЬаппегЗ. должны быть расположены в одной папке с файлом, в котором находт исполняемый скрипт.
Названия файлов с баннерами можно сделать произвольными, добавив их в массив:
m_Mass = new Array("banner-red.gif", "banner-blue.jpeg",
"banner-gray.gif", "banner-white.png");
var m_Var = Math.floor(Math.random()*3.9999);
document.write("<IMG src='" + m_Mass[m_Var]);
document.write("' width='480' height='60'>");