Массивы. Одномерные массивы. Создание массива. Свойство length. Формирование массива
Содержание
- 1. Понятие массива. Виды массивов
- 2. Объявление (создание) одномерного массива в JavaScript
- 3. Доступ к элементам массива. Свойства индекса массива. Добавление элементов к массиву
- 4. Определение размера массива. Свойство length
- 5. Формирование массива путём добавления новых элементов. Изменение длины массива
- 6. Примеры добавления элементов к массиву
- Связанные темы
Поиск на других ресурсах:
1. Понятие массива. Виды массивов
При разработке приложений часто нужно использовать и обрабатывать большое количество данных, которые имеют одинаковый тип или требуют группирования по некоторым критериям. Если это количество достигает нескольких десятков, сотен, тысяч и даже миллионов единиц, это требует ввода соответствующих средств группового хранения данных и доступа к этим данным. В JavaScript, как и в любом другом языке программирования, для обработки однотипных наборов данных введено понятие массива.
Следовательно, массив – это именованный набор элементов, которые:
- сохраняются послеовательно в памяти друг за другом;
- имеют единоподобный способ доступа к элементу путем индексирования, благодаря чему элементы в массиве группируются.
В языке JavaScript элементы массива могут быть как одного типа, так и разных типов. Каждый отдельный элемент массива:
- имеет свою позицию в массиве (индекс). В JavaScript первый элемент массива имеет индекс 0, второй – индекс 1 и т.д.;
- сохраняет значение. Доступ к элементу массива осуществляется по индексу.
Различают следующие виды массивов:
- одномерные. В одномерных массивах элементы формируются в ряд. Доступ к элементам массива осуществляется путём указания одного индекса (позиции);
- многомерные. Здесь элементы сформированы по двум, трем и более измерениям. Каждое измерение это тоже ряд элементов. Доступ к элементам многомерных массивов осуществляется на основе двух, трех и более индексов.
⇑
2. Объявление (создание) одномерного массива в JavaScript
В языке JavaScript одномерный массив создается одним из двух способов:
- с помощью ключевого слова new. В этом случае вызывается конструкция вида new Array();
- с помощью квадратных скобок []. Этот способ еще называют «литеральное определение массива».
⇑
2.1. Объявление массива с помощью ключевого слова new
В самом простом случае, объявление массива с использованием оператора new выглядит следующим образом:
var ArrayName = new Array(value1, value2, ..., valueN)
здесь
- ArrayName – имя массива;
- value1, value2, valueN – значения, которыми заполняются элементы массива. Здесь также можно указывать имена объявленных ранее переменных, соответственно, значения этих переменных будут подставляться в массив. Размерность массива (количество частей) устанавливается равной N.
Если нужно создать массив, не содержащий ни одного элемента (так называемый «пустой» массив), то синтаксис объявления следующий
var ArrayName = new Array()
здесь ArrayName – имя создаваемого массива.
Пример.
В примере демонстрируется создание массивов с помощью оператора new.
// Массив // Создание массива оператором new // 1. Создать пустой массив var EmptyArray = new Array() // 2. Создать массив из 5 чисел типа int var AI = new Array(7, 10, 2, 5, -3) // 3. Вывести массив AI на экран в строку document.write("AI:<br>") for (var i=0; i<AI.length; i++) document.write(AI[i]+" ") document.write("<br>") // 4. Создать массив из 4 строк и вывести его на экран var Seasons = new Array("Winter", "Spring", "Summer", "Autumn") document.write("Seasons:<br>") for (var i=0; i<Seasons.length; i++) document.write(Seasons[i]+" ") document.write("<br>") // 5. Создать массив разнотипных объектов var AObj = new Array("Hello, world!", 2.88, true, '+', 3000) // 6. Создать и вывести массив, содержащий элементы на основе переменных и вычислений var radius = 2.5 var ResultArray = new Array( 2*Math.PI*radius, Math.PI*radius*radius, 4.0/3.0*Math.PI*radius*radius*radius ) document.write("<br>ResultArray:<br>") for (var i=0; i<ResultArray.length; i++) document.write(ResultArray[i] + "<br>") document.write("<br>")
⇑
2.2. Литеральное создание массива. Конструкция []
Для создания массива этим способом используется следующий общий синтаксис.
var ArrayName = [ value1, value2, ..., valueN ]
здесь
- ArrayName – имя массива;
- value1, value2, valueN – значения элементов массива. Значения могут быть также переменными или результатами вычислений выражений.
Для создания «пустого» массива используется следующий синтаксис
var ArrayName = []
тут ArrayName – имя создаваемого массива.
Пример.
// Массивы // Создание массива литеральным способом [] // 1. Создать пустой массив var EmptyArray = [] // 2. Создать массив из 5 чисел типа int var AI = [ 7, 10, 2, 5, -3 ] // 3. Вывести массив AI на экран в строку document.write("AI:<br>") for (var i=0; i<AI.length; i++) document.write(AI[i]+" ") document.write("<br>") // 4. Создать массив из 4 строк и вывести его на экран var Seasons = [ "Winter", "Spring", "Summer", "Autumn" ] document.write("Seasons:<br>") for (var i=0; i<Seasons.length; i++) document.write(Seasons[i]+" ") document.write("<br>") // 5. Создать массив разнотипных объектов var AObj = [ "bestprog.net", -12.404, false, '+', 1E3 ] // 6. Создать и вывести массив, содержащий элементы на основе переменных и вычислений var radius = 2.5 var ResultArray = [ 2*Math.PI*radius, Math.PI*radius*radius, 4.0/3.0*Math.PI*radius*radius*radius ] document.write("<br>ResultArray:<br>") for (var i=0; i<ResultArray.length; i++) document.write(ResultArray[i] + "<br>") document.write("<br>")
Результат
AI: 7 10 2 5 -3 Seasons: Winter Spring Summer Autumn ResultArray: 15.707963267948966 19.634954084936208 65.44984694978736
⇑
3. Доступ к элементам массива. Свойства индекса массива. Добавление элементов к массиву
После объявления массива можно этот массив использовать или изменять. Доступ к отдельному элементу массива выполняется с помощью квадратных скобок []
ArrayName[index]
здесь
- ArrayName – имя массива;
- index – позиция в массиве. Это может быть число, строка, символ и т.д.
После объявления массива с некоторым набором элементов в этом массиве значения index формируются в возрастающем порядке, начиная с 0 (0, 1, 2, …). Однако язык JavaScript допускает использовать в качестве index любой объект. Этим объектом может быть строка, число с плавающей запятой, целое число, символ и т.д. Например, в строке
ArrayName['+'] = 2.88
создается ячейка со значением 2.88 но индекс ячейки будет значение ‘+’. То есть, в обратной операции
var c = ArrayName['+']
переменная c будет иметь значение 2.88.
Если указать несуществующий индекс, то результатом будет значение undefined
var A = [ 1, 2, 5] var item = A[15] // item = undefined
Пример.
// Массивы. Индекс массива // 1. Массив чисел, индексы массива равны 0, 1, 2. var AI = [ 2, 3, 8] var t t = AI[0] // t = 2 document.write("t = " + t + "<br>") // 2. Индекс массива - символ // 2.1. Создать пустой массив var AC = [] // 2.2. Добавить элементы к массиву AC['+'] = "Plus" AC['-'] = "Minus" AC['*'] = "Multiplication" // 2.3. Получить название по индексу '+' var sign = AC['+'] document.write("sign = " + sign + "<br>") // 2.4. Получить название по несуществующему индексу sign = AC['&'] // sign = undefined document.write("sign = " + sign + "<br>") // 3. Индекс массива - строка символов // 3.1. Создать пустой массив var A = new Array() A["One"] = 1 A["Two"] = 2 A["Five"] = 5 // 3.2. Получить элемент с индексом "two" var number = A["Two"] document.write("number = " + number + "<br>") // 3.3. Получить элемент с индексом которого нету в массиве number = A["Nine"] // number = undefined document.write("number = " + number + "<br>") // 3.4. Попробовать получить элемент с индексом, имя которого // задано некорректно (со строчной литеры) number = A["one"] // number = undefined document.write("number = " + number + "<br>")
Результат
t = 2 sign = Plus sign = undefined number = 2 number = undefined number = undefined
⇑
4. Определение размера массива. Свойство length
Для определения размера массива используется свойство length, которое возвращает целое число, равное количеству элементов массива. Обращение к свойству для массива ArrayName может быть следующим
ArrayName.length
Свойство length базируется на самом высоком значении индекса занятого элемента в массиве, а не на количестве фактически созданных элементов.
Пример.
// Массивы. Получить размер массива. Свойство length // 1. Объявить пустой массив var EmptyArray = new Array() // 2. Получить и вывести размер массива EmptyArray var size = EmptyArray.length // size = 0 document.write(size + "<br>") // 3. Объявить массив из 3-х строк var AS = [ "December", "January", "February" ] size = AS.length // size = 3 document.write(size + "<br>") // 4. Добавить к массиву AS элемент AS[3] = "May" size = AS.length // size = 4 document.write(size + "<br>") // 5. Добавить к массиву AS элемент с нецелочисленным индексом AS['&'] = 123 size = AS.length // size = 4 - размер не изменился document.write(size + "<br>")
Результат
0 3 4 4
⇑
5. Формирование массива путём добавления новых элементов. Изменение длины массива
Массив можно создавать простым добавлением новых элементов в пустой или в уже существующий массив. Как известно, можно в качестве индекса использовать объект строчного, символьного типов или даже числового типа с плавающей запятой (float). В этом случае при добавлении элемента размер массива не будет изменен. Если к массиву добавить элемент с индексом целочисленного типа, то размер массива может измениться, если значение индекса больше или равно текущего размера массива.
При добавлении целочисленных элементов рассматриваются следующие случаи:
- добавляется один элемент (рисунок 1);
- добавляется несколько элементов (рисунок 2).
При добавлении одного элемента индекс этого элемента должен быть на 1 больше максимального значимого индекса в массиве.
Рисунок 1. Добавление одного элемента. Увеличение длины массива на 1 (свойство A.length)
В случае добавления нескольких целочисленных элементов, индекс добавляемого элемента как минимум на 2 больше максимального индекса массива (рисунок 2). Промежуточные элементы массива заполняются значением undefined.
Рисунок 2. Добавление группы элементов. Увеличение длины массива на 4 элемента
⇑
6. Примеры добавления элементов к массиву
6.1. Добавление частей с нецелочисленными индексами
В нижеприведенном коде в массив два раза добавляются элементы с индексами ‘+’ и ‘-‘. При этом свойство length не учитывает эти элементы, хотя элементы имеются в массиве. После того, как к массиву добавляется элемент с целочисленным индексом, свойство length увеличивается на 1.
// Массивы. Формирование массива // 1. Объявить массив из 3-х элементов типа Number var A = new Array(2, 8, 5) document.write(A.length) // 3 // 2. Добавить элемент с индексом '+' A['+'] = 50 // 3. Добавить элемент с индексом "abcd" A["abcd"] = 25 // 4. Вывести длину массива повторно document.write("<br>" + A.length) // 3 // 5. Добавить элемент с индексом 3 A[3] = 100 // 6. Еще раз вывести длину document.write("<br>" + A.length) // 4
Результат
3 3 4
⇑
6.2. Добавление элементов с целочисленными индексами
В примере показано увеличение размера массива при добавлении к нему элемента с индексом, который на 3 позиции превышает текущий размер массива.
Пример.
// Массивы. Формирование массива // 1. Объявить массив из 3-х элементов типа Number var A = new Array(2, 8, 5) document.write("length(A) = " + A.length) // length(A) = 3 // 2. Добавить элемент с индексом 6 A[6] = 50 // 3. Вывести длину массива и сам массив document.write("<br>length(A) = " + A.length) // length(A) = 7 document.write("<br>") for (var i = 0; i<A.length; i++) document.write(A[i] + " ") document.write("<br>")
Результат
length(A) = 3 length(A) = 7 2 8 5 undefined undefined undefined 50
⇑
Связанные темы
⇑