[Содержание] [Предыдущая] [Следующая] [Индекс]

Array

Представляет массив элементов.

Основной объект
Реализовано в Navigator 3.0, LiveWire 1.0

Создание

Конструктором Array:

new Array(arrayLength);
new Array(element0, element1, ..., elementN);

Параметры

arrayLength
(Факультативный) Начальная длина массива. Вы можете обращаться к этому значению, используя свойство length.
elementN
(Факультативный) Список значений элементов массива. Когда определена эта форма, массив инициализируется заданными величинами элементов, и свойство массива length устанавливается равным количеству параметров.

Описание

В Navigator  3.0, Вы можете определять начальную длину при создании массива. Следующий код создает массив из пяти элементов:

billingMethod = new Array(5)
Когда Вы создаете массив, все элементы первоначально равны null. Следующий код создает массив из 25 элементов, затем инициализирует первые три элемента:

musicTypes = new Array(25)
musicTypes[0] = "R&B"
musicTypes[1] = "Blues"
musicTypes[2] = "Джаз"
Однако, в Navigator 4.0, если Вы определяете LANGUAGE="JavaScript1.2" в тэге <SCRIPT>, использование new Array(1) создает новый массив с a[0]=1.

Длина массива увеличивается, если Вы присваиваете значение элементу, находящимуся за текущей длиной массива. Следующий код создает массив длиной 0, затем присваивает значение элементу 99. Это изменяет длину массива на 100.

colors = new Array()
colors[99] = "midnightblue"
Вы можете создавать плотный массив из двух или больше элементов, начинающихся с индекса 0, если Вы определяете начальные значения для всех элементов. Плотный массив, каждый из элементов которого имеет значение. Следующий код создает плотный массив с тремя элементами:

myArray = new Array("Hello", myVar, 3.14159)
В Navigator 2.0, Вы должны индексировать массив порядковым числом, например document.forms[0]. В Navigator 3.0 и более поздних версиях, Вы можете индексировать массив или порядковым числом или именем (если определено). Например, Вы определяете следующий массив:

myArray = new Array("Wind","Rain","Fire")
Вы можете затем обратиться к первому элементу массива как myArray[0] или myArray["Wind"].

В Navigator  4.0, результат соответствия регулярного выражения и строки может создавать массив. Этот массив имеет свойства и элементы, которые обеспечивают информацию о соответствии. Массив - возвращаемое значение RegExp.exec, String.match и String.replace. Для понимания этих свойств и элементов, рассмотрите следующий пример и затем обратитесь к таблице ниже:

<SCRIPT LANGUAGE="JavaScript1.2">
//Соответствие одному d, сопровождаемому одним, или
//большим количеством b, сопровождаемого одним d
//Помнит согласованные b и следующий d
//Игнорирует регистр
myRe=/d(b+)(d)/i;
myArray = myRe.exec("cdbBdbsbz");
</SCRIPT>
Свойства и элементы, возвращенные этим соответствием следующие:

Свойства/Элементы Описание Пример
input
Свойство только для чтения, которое отражает первоначальную строку с которой регулярное выражение было согласовано. cdbBdbsbz
index
Свойство только для чтения, которое является нуль-основанным индексом соответствия в строке. 1
[0]
Элемент только для чтения, который определяет последние согласованные символы. dbBd
[1], ...[n]
Элементы только для чтения, которые определяют подстроки согласования, если включены в регулярное выражение. Количество возможных подстрок неограничено. [1]=bB 
[2]=d

Резюме Свойств      

index
Для массива, созданного регулярным выражением соответствия, нуль-основанный индекс соответствия в строке.
input
Для массива, созданного регулярным выражением соответствия, отражает первоначальную строку с которой регулярное выражение было согласовано.
length
Отражает количество элементов в массиве
prototype
Позволяет добавлять свойства к объекту Array.

Резюме Методов

concat
Объединяет два массива и возвращает новый массив.
join
Объединяет все элементы массива в строку.
pop
Удаляет последний элемент из массива и возвращает этот элемент.
push
Добавляет один или более элементов к концу массива и возвращает последний добавленный элемент.
reverse
Реверсирует порядок элементов в массиве: первый элемент массива становится последним, и последний становится первым.
shift
Удаляет первый элемент из массива и возвращает этот элемент.
slice
Извлекает часть массива и возвращает новый массив.
splice
Добавляет и/или удаляет элементы из массива.
sort
Сортирует элементы массива.
toString
Возвращает строку, представляющую определенный объект.
unshift
Добавляет один или более количество элементов к началу массива и возвращает новую длину массива.

Примеры

Пример 1. Следующий пример создает массив msgArray, с длиной 0, затем присваивает значения элементам msgArray[0] и msgArray[99], изменяя длину массива на 100.

msgArray = new Array()
msgArray [0] = "Привет"
msgArray [99] = "мир"
// Следующее выражение истинно,
// потому что элемент msgArray [99] определен.
if (msgArray .length == 100)
   document.write("Длина равна 100.")
Смотрите также пример для onError.

Пример 2: Двумерный массив. Следующий код создает двумерный массив и показывает результаты.

a = new Array(4)
for (i=0; i < 4; i++) {
   a[i] = new Array(4)
   for (j=0; j < 4; j++) {
      a[i][j] = "["+i+","+j+"]"
   }
}
for (i=0; i < 4; i++) {
   str = "Строка "+i+":"
   for (j=0; j < 4; j++) {
      str += a[i][j]
   }
   document.write(str,"<p>")
}
Этот пример показывает следующие результаты:

Тест многомерного массива
Строка 0:[0,0][0,1][0,2][0,3]
Строка 1:[1,0][1,1][1,2][1,3]
Строка 2:[2,0][2,1][2,2][2,3]
Строка 3:[3,0][3,1][3,2][3,3]

Смотрите также

Image

Свойства

index

Для массива, созданного регулярным выражением соответствия, нуль-основанный индекс соответствия в строке.

Свойство объекта Array
Статическое
Реализовано в Navigator 4.0, Netscape Server 3.0

input

Для массива, созданного регулярным выражением соответствия, отражает первоначальную строку с которой регулярное выражение было согласовано.

Свойство объекта Array
Статическое
Реализовано в Navigator 4.0, Netscape Server 3.0

length

Целое число, которое определяет количество элементов в массиве. Вы можете устанавливать свойство length, чтобы усеч массив, в любое время. Вы не можете расширять массив; например, если Вы устанавливаете длину равной 3, когда она в настоящее время 2, массив будет все еще содержать только 2 элемента.

Свойство объекта Array
Реализовано в Navigator 3.0, LiveWire 1.0

Примеры

В следующем примере функция getChoice использует свойство length , чтобы выполнить итерации с каждым элементом массива musicType. musicType это элемент, выбранный в форме musicForm.

function getChoice() {
   for (var i = 0; i < document.musicForm.musicType.length; i++) {
      if (document.musicForm.musicType.options[i].selected == true) {
         return document.musicForm.musicType.options[i].text
      }
   }
}
Следующий пример укорачивает массив statesUS к длине 50, если текущая длина больше чем 50.

if (statesUS.length > 50) {
   statesUS.length=50
   alert("США имеют только 50 штатов. Новая длина равна " + statesUS.length)
}

prototype

Представляет прототип для этого класса. Вы можете использовать прототип, чтобы добавлять свойства или методы ко всем образцам класса. Для информации о прототипах смотрите Function.prototype.

Свойство объекта Array
Реализовано в Navigator 3.0, LiveWire 1.0

Методы

concat

Объединяет два массива и возвращает новый массив.

Метод объекта Array
Реализовано в Navigator 4.0, Netscape Server 3.0

Синтаксис

concat(arrayName2)

Параметры

arrayName2
Имя массива, чтобы присоеденить к этому массиву.

Описание

concat не изменяет первоначальные массивы, но возвращает копию на "один уровень в глубину", которая содержит копии элементов, объединенных из первоначальных массивов. Элементы первоначальных массивов копируются в новый массив следующим образом:

Если новый элемент добавлен к любому массиву, это не воздействует на другой массив.

join

Объединяет все элементы массива в строку.

Метод объекта Array
Реализовано в Navigator 3.0, LiveWire 1.0

Синтаксис

join(separator)

Параметры

separator
Определяет строку для отделения каждого элемента массива. Разделитель преобразовывается в строку в случае необходимости. Если опущен, элементы массива разделяются запятой.

Описание

Строковое преобразование всех элементов массива объединяет их в одну строку.

Примеры

Следующий пример создает массив a с тремя элементами, затем объединяет массив три раза: используя заданный по умолчанию разделитель, затем запятую и пробел, и затем плюс.

a = new Array("Ветер","Дождь","Огонь")
document.write(a.join() +"<BR>")
document.write(a.join(", ") +"<BR>")
document.write(a.join(" + ") +"<BR>")
Этот код производит следующий вывод:

Ветер,Дождь,Огонь
Ветер, Дождь, Огонь
Ветер + Дождь + Огонь

Смотрите также

Array.reverse

pop

Удаляет последний элемент из массива и возвращает этот элемент. Этот метод изменяет длину массива.

Метод объекта Array
Реализовано в Navigator 4.0, Netscape Server 3.0

Синтаксис

pop()

Параметры

Нет.

Примеры

Следующий код показывает массив myFish перед и после удаления последнего элемента. Также показывает удаленный элемент:

myFish = ["ангел", "клоун", "мандарин", "хирург"];
document.writeln("myFish перед: " + myFish);
popped = myFish.pop();
document.writeln("myFish после: " + myFish);
document.writeln("удален этот элемент: " + popped);
Этот пример показывает следующее:

myFish перед: ["ангел", "клоун", "мандарин", "хирург"]
myFish после: ["ангел", "клоун", "мандарин"]
удален этот элемент: хирург

Смотрите также

push, shift, unshift

push

Добавляет один или более элементов к концу массива и возвращает последний добавленный элемент. Этот метод изменяет длину массива.

Метод объекта Array
Реализовано в Navigator 4.0, Netscape Server 3.0

Синтаксис

push(elt1, ..., eltN)

Параметры

elt1, ..., eltN
Элементы, добавляемые к концу массива.

Описание

Поведение метода push аналогично функции push в Perl 4. Обратите внимание, что это поведение отлично в Perl 5.

Пример

Следующий код показывает массив myFish перед и после добавления элементов в его конец. Также показывает последний добавленный элемент:

myFish = ["ангел", "клоун"];
document.writeln("myFish перед: " + myFish);
pushed = myFish.push("барабан", "лев");
document.writeln("myFish после: " + myFish);
document.writeln("последним добавлен этот элемент: " + pushed);
Этот пример показывает следующее:

myFish перед: ["ангел", "клоун"]
myFish после: ["ангел", "клоун", "барабан", "лев"]
последним добавлен этот элемент: лев

Смотрите также

pop, shift, unshift

reverse

Реверсирует порядок элементов в массиве: первый элемент массива становится последним, и последний становится первым.

Метод объекта Array
Реализовано в Navigator 3.0, LiveWire 1.0

Синтаксис

reverse()

Параметры

Нет.

Описание

Метод reverse реверсирует порядок элементов в вызывающем объекте array.

Примеры

Следующий пример создает массив myArray, содержащий три элемента, затем реверсирует порядок элементов в массиве.

myArray = new Array("один", "два", "три")
myArray.reverse()
Этот код изменяет myArray так:

Смотрите также

Array.join, Array.sort

shift

Удаляет первый элемент из массива и возвращает этот элемент. Этот метод изменяет длину массива.

Метод объекта Array
Реализовано в Navigator 4.0, Netscape Server 3.0

Синтаксис

shift()

Параметры

Нет.

Пример

Следующий код показывает массив myFish перед и после удаления его первого элемента. Также показывает удаленный элемент:

myFish = ["ангел", "клоун", "мандарин", "херург"];
document.writeln("myFish перед: " + myFish);
shifted = myFish.shift();
document.writeln("myFish после: " + myFish);
document.writeln("Удален этот элемент: " + shifted);
Этот пример показывает следующее:

myFish перед: ["ангел", "клоун", "мандарин", "херург"]
myFish после: ["клоун", "мандарин", "херург"]
Удален этот элемент: ангел

Смотрите также

pop, push, unshift

slice

Извлекает часть массива и возвращает новый массив.

Метод объекта Array
Реализовано в Navigator 4.0, Netscape Server 3.0

Синтаксис

slice(begin,end)

Параметр

begin
Нуль-основанный индекс, с которого начинать извлечение.
end
(Факультативный) Нуль-основанный индекс, на которм заканчивать извлечение:

Описание

slice не изменяет первоначальный массив, но возвращает новую копию на "один уровень вглубь", которая содержит копии элементов, вырезанных из первоначального массива. Элементы первоначального массива копируются в новый массив следующим образом:

Объектные ссылки (и не фактический объект) -- slice копирует объектные ссылки в новый массив. И первоначальный и новый массивы обращаются к одному и тому же объекту. Если объектные ссылки изменяются, изменения видны и в новом и первоначальном массивах.

Строки и числа (не объекты String и Number) -- slice копирует строки и числа в новый массив. Изменения строк или чисел в одном массиве не воздействуют на другой массив.

Если новый элемент добавлен к любому массиву, это не воздействует на другой массив.

Примеры

В следующем примере slice создает новый массив newCar из myCar. Оба включают ссылку на объект myHonda. Когда свойство color myHonda изменяется на purple, оба массива отражают изменение.

<SCRIPT LANGUAGE="JavaScript1.2">
//Используем slice для создания newCar из myCar.
myHonda = {color:"красный",wheels:4,engine:{cylinders:4,size:2.2}}
myCar = [myHonda, 2, "cherry condition", "куплена в 1997"]
newCar = myCar.slice(0,2)
//Пишем значения myCar, newCar и свойства color myHonda 
// имеющегося в обоих массивах.
document.write("myCar = " + myCar + "<BR>")
document.write("newCar = " + newCar + "<BR>")
document.write("myCar[0].color = " + myCar[0].color + "<BR>")
document.write("newCar[0].color = " + newCar[0].color + "<BR><BR>")
//Изменяем цвет свойства color myHonda.
myHonda.color = "фиолетовый"
document.write("Новый цвет моей Honda " + myHonda.color + "<BR><BR>")
//Пишем свойство color myHonda, имеющегося в обоих массивах.
document.write("myCar[0].color = " + myCar[0].color + "<BR>")
document.write("newCar[0].color = " + newCar[0].color + "<BR>")
</SCRIPT>
Этот сценарий записывает:

myCar = [{color:"красный", wheels:4, engine:{cylinders:4, size:2.2}}, 2,
   "cherry condition", "куплена в 1997"]
newCar = [{color:"красный", wheels:4, engine:{cylinders:4, size:2.2}}, 2]
myCar[0].color = красный newCar[0].color = красный
Новый цвет моей Honda фиолетовый
myCar[0].color = фиолетовый
newCar[0].color = фиолетовый

splice

Изменяет содержание массива, добавляя новые элементы при удалении старых элементов.

Метод объекта Array
Реализовано в Navigator 4.0, Netscape Server 3.0

Синтаксис

splice(index, howMany, newElt1, ..., newEltN)

Параметры

index
Индекс, с которого начинать изменение массива.
howMany
Целое число, указывающее число старых элементов массива для удаления. Если howMany равно 0, никакие элементы не удаляются. В этом случае, Вы должны определить по крайней мере один новый элемент.
newElt1, ..., newEltN
(Факультативный) Элементы, добавляемые к массиву. Если Вы не определяете ни одного элемента, splice просто удаляет элементы из массива.

Описание

Если Вы определяете различное число элементов для вставки и удаления, массив будет иметь другую длину в конце запроса.

Если howMany равно 1, этот метод возвращает один элемент, который был удален. Если howMany больше чем 1, метод возвращает массив, содержащий удаленные элементы.

Примеры

Следующий сценарий иллюстрирует использование splice:

<SCRIPT LANGUAGE="JavaScript1.2">
myFish = ["ангел", "клоун", "мандарин", "херург"];
document.writeln("myFish: " + myFish + "<BR>");
removed = myFish.splice(2, 0, "барабан");
document.writeln("После добавления 1: " + myFish);
document.writeln("удалено: " + removed + "<BR>");
removed = myFish.splice(3, 1)
document.writeln("После удаления 1: " + myFish);
document.writeln("удалено: " + removed + "<BR>");
removed = myFish.splice(2, 1, "труба")
document.writeln("После замены 1: " + myFish);
document.writeln("удалено: " + removed + "<BR>");
removed = myFish.splice(0, 2, "попугай", "анемон", "синий")
document.writeln("После замены 2: " + myFish);
document.writeln("удалено: " + removed);
</SCRIPT>
Этот сценарий показывает:

myFish: ["ангел", "клоун", "мандарин", "херург"]
После добавления 1: ["ангел", "клоун", "барабан", "мандарин", "херург"]
удалено: undefined
После удаления 1: ["ангел", "клоун", "барабан", "херург"]
удалено: мандарин
После замены 1: ["ангел", "клоун", "труба", "херург"]
удалено: барабан
После замены 2: ["попугай", "анемон", "синий", "труба", "херург"]
удалено: ["ангел", "клоун"]

sort

Сортирует элементы массива.

Метод объекта Array
Реализовано в Navigator 3.0, LiveWire 1.0
Navigator 4.0: Поведение изменено.

Синтаксис

sort(compareFunction)

Параметры

compareFunction
Определяет функцию, которая определяет порядок сортировки. Если опущен, массив сортируется лексикографически (в словарном порядке) согласно строковому преобразованию каждого элемента.

Описание

Если compareFunction не обеспечена, элементы сортируются, преобразуются в строки и сравниваются в лексикографическом порядке ("словарь" или "телефонная книга," не числовой). Например, "80" находится перед "9" в лексикографическом порядке, Но в числовой сортировке 9 находится прежде 80.

Если compareFunction обеспечена, элементы массива сортируются согласно возвращаемому значению сравнивающей функции. Если a и b два сравниваемых элемента, тогда:

Так, сравнивающая функция имеет следующую форму:

function compare(a, b) {
   if (a меньше b в соответствии с некоторым критерием упорядочивания)
      return -1
   if (a больше b в соответствии с критерием упорядочивания)
      return 1
   // a должно быть равно b
   return 0
}
Чтобы сравнивать числа вместо строк, сравнивающая функция может просто вычитать b из a:

function compareNumbers(a, b) {
   return a - b
}
JavaScript использует устойчивую сортировку: индекс частичного порядка a и b не изменяется если a и b равны. Если индекс a был меньше индекса b перед сортировкой, это останется и после сортировки, независимо от того, как a и b передвигаются из-за сортировки.

Поведение метода sort различается в Navigator 3.0 и Navigator 4.0. В Navigator 3.0, на некоторых платформах метод sort не работает. Этот метод работает на всех платформах в Navigator 4.0.

В Navigator 4.0, этот метод больше не преобразовывает неопределенные элементы в null; взамен этого сортирует их к концу массива. Например, Вы имеете следующий сценарий:

<SCRIPT>
a = new Array();
a[0] = "Муравей";
a[5] = "Зебра";
function writeArray(x) {
   for (i = 0; i < x.length; i++) {
      document.write(x[i]);
      if (i < x.length-1) document.write(", ");
   }
}
writeArray(a);
a.sort();
document.write("<BR><BR>");
writeArray(a);
</SCRIPT>
В Navigator 3.0, JavaScript напечатает:

муравей, null, null, null, null, зебра 
муравей, null, null, null, null, зебра
В Navigator 4.0, JavaScript напечатает:

муравей, undefined, undefined, undefined, undefined, зебра 
муравей, зебра, undefined, undefined, undefined, undefined

Примеры

Следующий пример создает четыре массива и показывает первоначальный массив, затем сортирует массивы. Числовые массивы сортируются без сравнивающей функции и с ней.

<SCRIPT>
stringArray = new Array("Синий","Humpback","Белуга")
numericStringArray = new Array("80","9","700")
numberArray = new Array(40,1,5,200)
mixedNumericArray = new Array("80","9","700",40,1,5,200)
function compareNumbers(a, b) {
   return a - b
}
document.write("<B>stringArray:</B> " + stringArray.join() +"<BR>")
document.write("<B>Сортировка:</B> " + stringArray.sort() +"<P>")
document.write("<B>numberArray:</B> " + numberArray.join() +"<BR>")
document.write("<B>Сортировка без функции сравнения:</B> " + numberArray.sort() +"<BR>")
document.write("<B>Сортировка с compareNumbers:</B> " + numberArray.sort(compareNumbers) +"<P>")
document.write("<B>numericStringArray:</B> " + numericStringArray.join() +"<BR>")
document.write("<B>Сортировка без функции сравнения:</B> " + numericStringArray.sort() +"<BR>")
document.write("<B>Сортировка с compareNumbers:</B> " + numericStringArray.sort(compareNumbers) +"<P>")
document.write("<B>mixedNumericArray:</B> " + mixedNumericArray.join() +"<BR>")
document.write("<B>Сортировка без функции сравнения:</B> " + mixedNumericArray.sort() +"<BR>")
document.write("<B>Сортировка с compareNumbers:</B> " + mixedNumericArray.sort(compareNumbers) +"<BR>")
</SCRIPT>
Этот пример производит следующий вывод. Вывод показывается, когда сравнивающая функция используется, числа сортируются правильно, являются ли они числами или числовыми строками.

stringArray: Синий,Humpback,Белуга
Сортировка: Белуга,Синий,Humpback
numberArray: 40,1,5,200
Сортировка без функции сравнения: 1,200,40,5
Сортировка с compareNumbers: 1,5,40,200
numericStringArray: 80,9,700
Сортировка без функции сравнения: 700,80,9
Сортировка с compareNumbers: 9,80,700
mixedNumericArray: 80,9,700,40,1,5,200
Сортировка без функции сравнения: 1,200,40,5,700,80,9
Сортировка с compareNumbers: 1,5,9,40,80,200,700

Смотрите также

Array.join, Array.reverse

toString

Возвращает строку, представляющую определенный объект.

Метод объекта Array
Реализовано в Navigator 3.0, LiveWire 1.0

Синтаксис

toString()

Параметр

Нет.

Описание

Каждый объект имеет метод toString, который автоматически вызывается, когда объект должен представиться как текстовое значение или когда объект упоминается в строковой конкатенации.

Вы можете использовать toString внутри Вашего собственного кода, чтобы преобразовать объект в строку, и Вы можете создать Вашу собственную функцию, которая будет вызвана вместо заданного по умолчанию метода toString.

Для объекта Array, встроенный метод toString объединяет массив и возвращает одну строку, содержащую все элементы массива, разделенные запятыми. Например, следующий код создает массив и использует toString, чтобы преобразовать массив в строку при написании вывода.

var monthNames = new Array("Янв","Фев","Мар","Апр")
document.write("monthNames.toString() равно " + monthNames.toString())
Вывод следующий:

monthNames.toString() равно Янв,Фев,Мар,Апр
Для информации об определении Вашего собственного метода toString, смотрите метод Object.toString.

unshift

Добавляет один или больше элементов к началу массива и возвращает новую длину массива.

Метод объекта Array
Реализовано в Navigator 4.0, Netscape Server 3.0

Синтаксис

arrayName.unshift(elt1,..., eltN)

Параметры

elt1,...,eltN
Элементы, добавляемые в начало массива.

Примеры

Следующий код показывает массив myFish перед и после доьавления элементов в него.

myFish = ["ангел", "клоун"];
document.writeln("myFish перед: " + myFish);
unshifted = myFish.unshift("барабан", "лев");
document.writeln("myFish после: " + myFish);
document.writeln("Новая длина: " + unshifted);
Этот пример показывает следующее:

myFish перед: ["ангел", "клоун"]
myFish после: ["барабан", "лев", "ангел", "клоун"]
Новая длина: 4

Смотрите также

pop, push, shift


[Содержание] [Предыдущая] [Следующая] [Индекс]

Последняя Модификация: 10/31/97 16:00:33


Права © 1997 Netscape Communications Corporation



Все мессаги сюда:yanich@inbox.ru
Hosted by uCoz