Лабораторная работа № 6. Работа с массивами на JavaScript
Массивы в JavaScript являются нетипизированными, то есть элементы одного и того же массива могут иметь разные типы. Элементы массива могут быть объектами или другими массивами, что позволяет создавать сложные структуры данных, такие как массивы объектов и массивы массивов. Отсчет индексов массивов в языке JavaScript начинается с нуля и для них используются 32-битные целые числа. Массивы в JavaScript являются динамическими: они могут увеличиваться и уменьшаться в размерах по мере необходимости; поэтому нет необходимости объявлять фиксированные размеры массивов при их создании или повторно распределять память при изменении их размеров. Создать массив проще всего с помощью литерала, который представляет собой простой список разделенных запятыми элементов в квадратных скобках. Значениями литерала массива могут быть константы, выражения, литералы объектов:
var empty = []; // Пустой массив var numbers = [2, 3, 5, 7, 11]; // Массив с пятью числовыми элементами var misc = [ 1.1, true, "a", ]; // 3 элемента разных типов + завершающая запятая var base = 1024; var table = [base, base+1, base+2, base+3]; // Массив с переменными var arrObj = [[1,{x:1, y:2}], [2, {x:3, y:4}]]; // 2 массива внутри, содержащие объекты
Синтаксис литералов массивов позволяет вставлять необязательную завершающую запятую, то есть литерал [,,] соответствует массиву с двумя элементами, а не с тремя. Другой способ создания массива – конструктор Array(), который можно вызвать тремя разными способами: без аргументов; с единственным числовым аргументом, определяющим длину массива; с явным указанием значений первых двух или более элементов или одного нечислового элемента:
var arr = new Array(); // пустой массив, эквивалентный литералу [] var arr = new Array(10); // пустой массив, указанной длины var arr = new Array(5, 4, 3, 2, 1, "тест"); //массив с явным указанием элементов
Массив является специализированной разновидностью объекта, поэтому квадратные скобки, используемые для доступа к его элементам, действуют аналогично доступу к свойствам объекта. Интерпретатор JavaScript преобразует указанные в скобках числовые индексы в строки, например, индекс 1 – в строку "1", а затем использует эти строки как имена свойств. Следует четко отличать индексы в массиве от имен свойств объектов. Все индексы массива являются именами свойств, но только свойства с именами, представленными целыми числами являются индексами. Все массивы являются объектами, и к ним можно добавлять свойства с любыми именами. Однако если затрагиваются свойства, которые являются индексами массива, то массивы реагируют на это, обновляя при необходимости значение свойства length. В качестве индексов массивов допускается использовать отрицательные и нецелые числа. В этом случае числа преобразуются в строки, которые используются как имена свойств. Добавление и удаление элементов массива. Самый простой способ добавления элементов массива – это присваивание значений его новым индексам. Для добавления одного или более элементов в конец массива можно также использовать метод push():
var arr = []; // Создать пустой массив arr.push('zero'); // Добавить значение в конец массива arr.push('one',2); // Добавить еще два значения в массив
Добавить элемент в конец массива можно также, присвоив значение элементу arr[arr.length]. Для вставки элемента в начало массива можно использовать метод unshift(), при этом существующие элементы в массиве смещаются в позиции с более высокими индексами. Удалять элементы массива можно как обычные свойства объекта – с помощью оператора delete:
var arr = [1,2,'three']; delete arr[2]; 2 in arr; // false, индекс 2 в массиве не определен arr.length; // 3: оператор delete не изменяет свойство length массива
Многомерные массивы. JavaScript не поддерживает «настоящие» многомерные массивы, но позволяет имитировать их при помощи массива из массивов. Для доступа к элементу данных в массиве массивов достаточно дважды использовать оператор [ ]. Методы класса Array: Array.join() – преобразует все элементы массива в строки, объединяет их и возвращает получившуюся строку. Array.reverse() – меняет порядок следования элементов в массиве на обратный и возвращает переупорядоченный массив; Array.sort() – сортирует элементы в исходном массиве и возвращает отсортированный массив; Array.concat() – создает и возвращает новый массив, содержащий элементы исходного массива, для которого был вызван метод concat(), и значения всех переданных ему аргументов; Array.slice() – возвращает фрагмент, или подмассив указанного массива. Array.splice() – универсальный метод, выполняющий вставку или удаление элементов массива; push() и pop() – позволяют работать с массивами как со стеками. unshift() и shift() – ведут себя почти так же, как push() и pop(), за исключением того, что они вставляют и удаляют элементы в начале массива, а не в конце.
Порядок выполнения работы: выполнить следующие четыре задания, вариарты которых приведены в таблице 6.1. Задание 1. Создать одномерный числовой массив R из k элементов. Добавить m текстовых элементов в начало массива R и n текстовых – в его конец. Задание 2. Создать двухмерный массив размерностью m ´ n и заполнить случайными равномерно распределенными числами. Строки с четными номерами рассортировать Задание 3. Создать двухмерный массив размерностью k ´ m, содержащий текстовые и числовые элементы. Используя метод Array.join() преобразовать все числовые элементы массива в строки; изменить порядок следования элементов массива на обратный; Задание 4. Создать двухмерный массив размерностью k ´ m числовых и текстовых элементов, Используя методы unshift() и push() добавить k-4 элементов в начало и конец массива, и методы shift() и pop() – удалить m-3 элементов из начала и конца заданного массива.
Таблица 6.1 – Варианты заданий
Контрольные вопросы 1. Какие методы создания массивов Вы знаете? 2. Что такое динамический массив в JavaScript? 3. Что мажет быть элементом массива в JavaScript? 4. С какого значения ведется отсчет индексов массивов в JavaScript? 5. Как построить доступ к элементу массива? 6. Какой тип может иметь индекс элемента массива? 7. Как понимать: "массив – специализированная разновидность объекта"? 8. Какие методы используются для добавления и удаления элементов массива? 9. Как в JavaScript поддерживается работа с многомерными массивами? 10. Какие методы класса Array Вы знаете?
Популярное: Почему стероиды повышают давление?: Основных причин три... Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние... Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (576)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |