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

Лабораторная работа №3

Javascript поддерживает два вида структуры "массив":

- Ассоциативный массив (хеш), где данные хранятся по произвольному ключу.

- Числовой массив Array, где данные хранятся по номерам.

Javascript - очень гибкий язык, поэтому технически в Array можно хранить произвольные ключи, как в Object. Но лучше использовать типы по назначению.

Для хранения данных по номеру предназначен тип Array.

1 var arr = new Array()

2 arr.test = 5

3 arr[1] = "ххххх"

4 ...

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

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

Есть два эквивалентных способа создания массива:var a = new Array()

var a = []

Или, сразу со значениямиvar a = new Array("a", 1, true)

var a = ["a", 1, true]

Эти способы работают одинаково, кроме объявления вида new Array(10), когда у конструктора есть единственный аргумент-число.

Такое объявление создаст пустой массив (все элементы undefined) длиной 10. По возможности, не используйте new Array.

Отсчет элементов начинается с нуля:

alert(a[0]) // => "a"

Массив хранит данные по численным ключам, но внутри он использует точно такой же хэш (ту же структуру данных), как и обычный объект, поэтому можно сделать так:

var a = []

a[1] = 1

a[999999] = 2

и массив a будет занимать память, нужную для хранения этих двух соответствий, а не займет длинный непрерывный кусок памяти, как это произошло бы в языке С.

Авто-длина length

У каждого массива есть свойство length, которое автоматом меняется при каждом обновлении массива. Длина массива - это не количество элементов, а максимальный целый ключ + 1:alert(a.length) // всего 2 элемента, но выведет 1000000

Добавлять новый элемент можно эквивалентными вызовамиa[a.length] = "new element"

a.push("new element")

Перебор элементов

Перебор элементов обычно (когда индексы непрерывные) осуществляется простым циклом:1 var arr = [ "array", "elements", "here" ]

2 for(var i=0; i<arr.length; i++) {

3 ... сделать что-то с arr[i] ...

4 }

Если индексы - с разрывами, то перебор осуществляется так же, как в объектах:1 var arr = []

2 arr[1] = 123

3 arr[9999] = 456

5 for(var i in arr) {

6 if (!arr.hasOwnProperty(i)) continue;

7 ... сделать что-то с arr[i] ...

8 }

Очередь + стек

В массиве есть всё необходимое, чтобы работать с ним как с очередью или со стеком, или и с тем и другим одновременно.

Методы push и pop добавляют или вынимают значение с конца массива1 var arr = [3,5,7]

2 arr.push(9)

3 var last = arr.pop() //= 9

4 var last = arr.pop() // = 7

5 alert(arr.length) // = 2

Методы shift/unshift делают то же самое, с начала массива.1 var arr = [4,6,8]

2 arr.unshift(2) // arr = [2,4,6,8]

3 arr.unshift(0) // arr = [0,2,4,6,8]

4 var last = arr.shift() // last = 0, arr = [2,4,6,8]

5 arr.shift() // arr = [4,6,8]

shift/unshift обычно приводят к перенумерации всего массива. shift сдвигает все элементы на единицу влево, а unshift - вправо. Поэтому на больших массивах эти методы работают медленнее, чем push/pop.

Другие методы

sliceslice(begin[, end])

Возвращает подмассив с индексами begin…end.

splicesplice(index, deleteCount[, element1,…, elementN])

Удалить deleteCount элементов, начиная с index, и вставить на их место element1…elementN

Есть и еще много методов:

join

reverse

...

1. Создать одномерный массив из 17 элементов. Вычислить среднеарифметическое значение элементов, больших А (А вводится с клавиатуры).

2. Создать одномерный массив из 16 элементов. Поменять местами наибольший элемент массива с наименьшим. Вывести новый массив.

3. Создать одномерный массив из 13 элементов. Сколько элементов больше числа А (А вводится с клавиатуры).

4. Создать одномерный массив из 18 элементов. Все отрицательные элементы заменить на минимальное значение массива. Вывести новый массив.

5. Создать одномерный массив из 17 элементов. Сколько нечетных элементов с нечетными индексами?

6. Создать одномерный массив из 14 элементов. Заменит все нули числом 100.

7. Создать одномерный массив из 17 элементов. Поменять местами наименьший элемент с первым элементом массива. Вывести новый массив.

8. Создать одномерный массив из 18 элементов. Сколько четных элементов с четными индексами?

9. Создать одномерный массив из 17 элементов. Заменить все отрицательные элементы на значение А (А вводится с клавиатуры).

10. Создать одномерный массив из 14 элементов. Поменять местами первый и последний элементы. Вывести новый массив.

11. Создать одномерный массив из 16 элементов. Найти наименьшее значение и его индекс из отрицательных элементов.

12. Создать одномерный массив из 17 элементов. Вычислить произведение четных элементов с нечетными индексами.

Наши рекомендации