Home » Скриптинг

Массивы в JavaScript — свойства и методы

20 Октябрь 2008 No Comment

Объект Array является встроенным объектом JavaScript и используется для создания массивов, т. е. упорядоченных наборов элементов любого типа.

Создание массива

а) создание пустого массива:

var colorSet = new Array(); // или
var colorSet = Array(); // или
var myPointArray = new Array; //или
ColorNames = [];

b) создание массива с заданным количеством элементов:

var colorSet = new Array(5); или
var colorSet = Array(5);

с) создание заполненного значениями массива:

var new Array(»hello») // массив с одним значением
var myExportFormats = ["Text Only", "Tagged Text", "RTF"]; // массив с тремя значениями
var myInfoColor = [0,15,100,0]; // массив с четырьмя значениями

В двух последних случаях массив создан при помощи инициализатора массива [элемент0, элемент1, …, элементN]

d) Неявное увеличение размера массива произойдет, если присвоить несуществующему элементу массива какое-то значение:

var colorSet = Array(5);
colorSet[9] = «Magenta»;

Размер массива увеличился до 10 элементов.

Свойсва массива

Самым важным свойством массива является свойство Length — размер массива, количество элементов в нем.

var myExtensions = [".jpg", ".jpeg", ".eps", ".ps", ".pdf", ".tif", ".tiff", ".gif", ".psd", ".ai"]
var size=myExtensions.length;
alert(»В массиве «+size+» элементов»);

Сообщение

Сообщение

Методы

1. Метод concat() — объединение двух массивов в новый массив

Синтаксис: массив.concat(массив1)
Аргументы: массив1 — выражение, возвращающее массив
Результат: новый массив

// Метод 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) // Длина дополненного массива
// Просматриваем дополненный массив
for(i=0; i<myExtensions1.length; i++)
{
alert(»Элемент массива «+i+» равен «+myExtensions1[i]);
}

2. Метод join() — преобразовывает все элементы массива в строки, которые потом объединяются в одну строку. Разделять значения массива можно при помощи задания специальной строки. Если строку-разделитель не задать, то значения массива будут разделены пустой строкой. (??? — в моём опыте получается не пустой строкой, а запятой???)

Синтаксис: массив.join(разделитель)
Аргументы: разделитель — любое строковое выражение
Результат: строковое значение

// Метод 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()
Результат: значение последнего элемента массива

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 – любые выражения
Результат: новая длина массива

var myColors=["Red", "Blue"];
var newSize;
newSize=myColors.push(»Yellow», «Green», «Black»);
alert(»После применения метода push() размер массива стал «+newSize);

5. Метод reverse() — изменяет порядок следования элементов в массиве на противоположный. Если не все элементы массива были определены, то им присваивается значение undefined.

Синтаксис: массив.reverse()
Результат: массив

var x = ["a", "b", "c", "d"];
x.reverse();
alert(»Просмотр массива:» + x.join(»,»));

6. Метод Shift() — удаляет первый элемент массива и возвращает его в качестве результата. Размер массива при этом уменьшается на 1.

Синтаксис: массив.shift()

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], т. е. копируются все элементы до конца массива.

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() — сортирует массив, делая в нем перестанвки. Способ сортировки задается необязательным аргументом функция; если аргумента нет, то производится сортировка в лексикографическом порядке по возрастанию значений элементов, которые предварительно преобразуются в строки.

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

//Пример сортировки массива в лексикографическом порядке
//по убыванию значений элементов

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(начало, счетчик [,элементы])
Аргументы: начало и счетчик – любые числовые выражения
элементы – список любых выражений через запятую
Результат: новый массив

Аргумент начало задает индекс первого элемента удаляемой части, аргумент счетчик – количество удаляемых элементов.
Если заданы элементы, то они вставляются вместо удаленной части массива.

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()
Результат: строковое значение

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 – любые выражения
Результат: новая длина массива

var myColors=new Array(»голубой», «зеленый», «красный»);
var mySize=myColors.length;
alert(»Длина массива:»+ mySize);
// Удаляем первый элемент массива
var mySize = myColors.unshift(»черный», «белый»);
alert(»В массиве сейчас элементы: «+ myColors);
alert(»Новая длина массива: «+mySize);

Leave your response!

You must be logged in to post a comment.