Массивы в JavaScript — свойства и методы
Объект Array является встроенным объектом JavaScript и используется для создания массивов, т. е. упорядоченных наборов элементов любого типа.
Создание массива
а) создание пустого массива:
1 2 3 | var colorSet = new Array(); // или var myPointArray = new Array; //или ColorNames = []; |
b) создание массива с заданным количеством элементов:
1 2 | var colorSet = new Array(5); //или var colorSet = Array(5); |
с) создание заполненного значениями массива:
1 2 3 | var new Array("hello") // массив с одним значением var myExportFormats = ["Text Only", "Tagged Text", "RTF"]; // массив с тремя значениями var myInfoColor = [0,15,100,0]; // массив с четырьмя значениями |
В двух последних случаях массив создан при помощи инициализатора массива [элемент0, элемент1, …, элементN]
d) Неявное увеличение размера массива произойдет, если присвоить несуществующему элементу массива какое-то значение:
1 2 | var colorSet = Array(5); colorSet[9] = "Magenta"; |
Размер массива увеличился до 10 элементов.
Свойсва массива
Самым важным свойством массива является свойство Length — размер массива, количество элементов в нем.
1 2 3 | var myExtensions = [".jpg", ".jpeg", ".eps", ".ps", ".pdf", ".tif", ".tiff", ".gif", ".psd", ".ai"] var size=myExtensions.length; alert("В массиве "+size+" элементов"); |
Методы
1. Метод concat() — объединение двух массивов в новый массив
Синтаксис: массив.concat(массив1)
Аргументы: массив1 — выражение, возвращающее массив
Результат: новый массив
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | // Метод concat (JavaScript var i; var myExtensions1 = [".jpg", ".jpeg", ".eps", ".ps"]; var myExtensions2 = [".pdf", ".tif", ".tiff", ".gif", ".psd", ".ai"]; var myExtensionsAll=[]; // Сюда сбросим два массива // Применяем метод для создания нового массива myExtensionsAll=myExtensions1.concat(myExtensions2); alert(myExtensionsAll.length); // Количество элементов в новом массиве // Просматриваем элементы for(i=0; i<myExtensionsAll.length; i++) { alert("Элемент массива "+i+" равен "+myExtensionsAll[i]); } // Добавление второго массива к первому: myExtensions1=myExtensions1.concat(myExtensions2); alert(myExtensions1.length) // Длина дополненного массива <span style="color: #008000;">// Просматриваем дополненный массив for(i=0; i<myExtensions1.length; i++) { alert("Элемент массива "+i+" равен "+myExtensions1[i]); } </span> |
2. Метод join() — преобразовывает все элементы массива в строки, которые потом объединяются в одну строку. Разделять значения массива можно при помощи задания специальной строки. Если строку-разделитель не задать, то значения массива будут разделены пустой строкой. (??? — в моём опыте получается не пустой строкой, а запятой???)
Синтаксис: массив.join(разделитель)
Аргументы: разделитель — любое строковое выражение
Результат: строковое значение
1 2 3 4 5 6 7 8 9 10 11 12 | // Метод Join() var myNum=[1,2,3]; alert(myNum.join(-)); // На экране получим: 1-2-3 var myColors=new Array("голубой, ", "зеленый, ", "красный"); alert(myColors.join("светло")); // На экране получим: 1-2-3 var myColors=new Array("голубой, ", "зеленый, ", "красный"); alert(myColors.join("светло")); // На экране получим: |
3. Метод pop() — удаляет последний элемент массива и возвращает его в качестве результата. Размер массива при этом уменьшается на 1.
Синтаксис: массив.pop()
Результат: значение последнего элемента массива
1 2 3 4 5 6 | var x = ["a", "b", "c", "d"]; var y; alert("В исходном массиве сейчас такие элементы "+x.join(", ")); y=x.pop(); alert("Методом pop() получаем последний элемент массива "+y); alert("В массиве остались элементы "+x.join(", ")); |
4. Метод push() — добавляет элементы в конец массива. Возвращает новый размер массива.
Синтаксис: массив.push(элемент1, …, элементN)
Аргументы: элемент1, …, элементN — любые выражения
Результат: новая длина массива
1 2 3 4 | var myColors=["Red", "Blue"]; var newSize; newSize=myColors.push("Yellow", "Green", "Black"); alert("После применения метода push() размер массива стал "+newSize); |
5. Метод reverse() — изменяет порядок следования элементов в массиве на противоположный. Если не все элементы массива были определены, то им присваивается значение undefined.
Синтаксис: массив.reverse()
Результат: массив
1 2 3 | var x = ["a", "b", "c", "d"]; x.reverse(); alert("Просмотр массива:" + x.join(",")); |
6. Метод Shift() — удаляет первый элемент массива и возвращает его в качестве результата. Размер массива при этом уменьшается на 1.
Синтаксис: массив.shift()
1 2 3 4 5 6 7 8 | var myColors=new Array("голубой", "зеленый", "красный"); var mySize=myColors.length; alert("Длина массива:"+ mySize); // Удаляем первый элемент массива var myFirstColor = myColors.shift(); alert("Изъят из массива " + myFirstColor); alert("В массиве сейчас элементы: "+ myColors.join()); alert("Длина массива: "+myColors.length); |
7. Метод Slice() — создаёт новый массив, беря из старого часть элементов
Синтаксис: массив.slice(начало [,конец])
Аргументы: начало и конец — любые числовые выражения
Результат: новый массив
Аргумент начало задает индекс первого элемента копируемой части, необязательный аргумент конец — индекс ее последнего элемента. При этом:
Если значение конец неотрицательно, то копируются элементы массив[начало], массив[начало+1], …, массив[конец-1].
Если значение конец отрицательно, то копируются элементы массив[начало], массив[начало+1], …, массив[массив.length – конец – 1], т. е. конец означает смещение от конца массива. Например, если конец = –1, то последний элемент не брать.
Если аргумент конец отсутствует, то копируются элементы массив[начало], массив[начало+1], …, массив[массив.length-1], т. е. копируются все элементы до конца массива.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | var myPoints=[22, 88, 67, 33, 97, 41]; var myMiddlePoints=[]; var myEndPoints=[]; var myStartPoints=[]; // В новый массив 2-е средние точки myMiddlePoints=myPoints.slice(2, -2); alert("Две средние точки: "+myMiddlePoints.join()); //В новый массив 2-е последние точки myEndPoints=myPoints.slice(4,5); alert("Две последние точки: "+myEndPoints.join()); // Или так: myEndPoints=myPoints.slice(4); alert("Две последние точки: "+myEndPoints.join()); //В новый массив 2-е первые точки myStartPoints=myPoints.slice(0,1); alert("Две первые точки: "+myStartPoints.join()); |
8. Метод sort() — сортирует массив, делая в нем перестанвки. Способ сортировки задается необязательным аргументом функция; если аргумента нет, то производится сортировка в лексикографическом порядке по возрастанию значений элементов, которые предварительно преобразуются в строки.
1 2 3 4 5 6 7 8 | a = new Array(1,6,9,9,3,5); function g(a,b) { if(a > b) return 1; if(a < b) return -1; if(a==b) return 0; } b = a.sort(g); |
В результате выполнения этого кода получим массив следующего вида:
b[0]=1
b[1]=3
b[2]=5
b[3]=6
b[4]=9
b[5]=9
1 2 3 4 5 6 7 8 9 10 11 12 | //Пример сортировки массива в лексикографическом порядке //по убыванию значений элементов var flowers = ["астра", "роза", "пион", "ромашка"]; alert(flowers.sort(cmp)); function cmp(a, b) { if (String(a) > String(b)) return -1; if (String(a) < String(b)) return 1; return 0; } |
В результате работы скрипта увидим строку строку: ромашка,роза,пион,астра.
9. Метод splice() — удаляет часть массива и возвращает ее в качестве результата
Синтаксис: массив.splice(начало, счетчик [,элементы])
Аргументы: начало и счетчик — любые числовые выражения
элементы — список любых выражений через запятую
Результат: новый массив
Аргумент начало задает индекс первого элемента удаляемой части, аргумент счетчик — количество удаляемых элементов.
Если заданы элементы, то они вставляются вместо удаленной части массива.
1 2 3 4 5 6 7 8 9 | var x = new Array(10); var y = new Array(); // Заполняем массив for (i = 0; i < 10; i++) { x[i] = i; } y=x.splice(5, 3, -5, -6, -7); alert(y);// выведет строку 5,6,7 alert(x); //выведет строку 0,1,2,3,4,-5,-6,-7,8,9. |
10. Метод toString() — преобразует массив в строковое значение. Для этого все элементы массива преобразуются в строки, и эти строки объединяются в одну строку через запятую.
Синтаксис: массив.toString()
Результат: строковое значение
1 2 3 | var x = new Array(10, 20, 30); var str=x.toString(); alert(x); // выведет строку 10,20,30. |
11. Метод toLocaleString() — преобразует массив в строковое значение, учитывая формат операционной системы. Результат — строковое значение — зависит от объекта. Обычно он дает тот же результат, что и метод toString().
12. Метод valueOf() — возвращает примитивное значение массива. Для этого все элементы массива преобразуются в строки, и эти строки объединяются в одну строку через запятую. Иными словами, этот метод возвращает тот же результат, что и метод toString().
Результат: строковое значение
13. Метод unshift() — добавляет значения аргументов в начало массива и возвращает в качестве результата новый размер массива, который при этом увеличивается на N.
Синтаксис: массив.unshift(элемент1, …, элементN)
Аргументы: элемент1, …, элементN — любые выражения
Результат: новая длина массива
1 2 3 4 5 6 7 | var myColors=new Array("голубой", "зеленый", "красный"); var mySize=myColors.length; alert("Длина массива:"+ mySize); // Удаляем первый элемент массива var mySize = myColors.unshift("черный", "белый"); alert("В массиве сейчас элементы: "+ myColors); alert("Новая длина массива: "+mySize); |
Последние комментарии