Содержание:
JavaScript объекты
// обычная строковая переменная myStr: let myStr = "Текст"; // создание строкового объекта myStr: let myStr = new String(); |
- Object(объекты)
- Number (обработка чисел)
- String (обработка строк)
- Array (массивы)
- Math (математические формулы, функции и константы)
- Date (работа с датами и временем)
- RegExp
- Global (его свойства Infinity, NaN, undefined)
- Function
Со всеми данными объектами мы познакомимся позже, с некоторыми из них мы частично уже знакомы.
Object — объект, который содержится во всех остальных объектах и обеспечивает их общую функциональность.
Объект function — функции являются объектами первого класса, т.е. могут присваиваться переменным, выступать аргументами других функций и быть результатом функций
Объявление новых объектов происходит одинаково, независимо от объекта (используется служебное слово new):
let arr = new Object();
let str = new String();
let arr = new Array();
Как видно из примера, в javascript объявление массива происходит точно так же, как и у других объектов.
JavaScript массивы, тип данных Array
Теперь подробнее рассмотрим объект массив.
Доступ к элементам массива осуществляется с помощью порядкового номера — индекса. Таким образом, массив — объект, представляющий собой проиндексированный набор элементов.
Обратите внимание на то, что в массиве могут храниться элементы любого типа.
alert()
вывести значение элемента массива с индексом 2. Вывести количество элементов массива.
✍ Решение:
1 2 3 4 5 6 | let arr = new Array(); arr[0] = "element1"; arr[1] = "element2"; arr[2] = "element3"; alert(arr[2]); alert("Число элементов" + arr.length); |
В javascript длина массива — свойство length
.
Javascript создание массива
Создание элементов массива возможно несколькими способами:
1 2 3 4 5 | let earth = new Array(4); /* массив-объект из 4-х элементов*/ earth[0] = "Планета"; earth[1] = "24 часа"; earth[2] = 6378; earth[3] = 365.25; |
let earth = new Array("Планета", "24 часа", 6378, 365.25); |
1 2 3 4 5 | let earth = new Array(); // пустой массив-объект earth.xtype = "Планета"; earth.xday = "24 часа"; earth.radius = 6378; earth.period = 365.25; |
// пустой массив не объект let country = []; // массив не объект со значениями let country = ["Россия", "Белоруссия", "Казахстан"]; |
Javascript: работа с массивами
1 2 3 4 | let mas=new Array(1,25,'Привет'); mas[0]='Пока'; mas[1]=35; |
Вывод элементов массива
write
, его элементы выводятся через запятую:
1 2 | let mas=new Array(1,25,'Привет'); document.write(mas) |
Результат:
1,25,Привет
- Рассмотрим, как осуществляется в javascript вывод массива с использованием обычного цикла
for
: - Использование цикла
for in
для перебора элементов массива (for in
— цикл для работы с объектами): - Использование цикла
for of
для перебора элементов массива (результат такой же):
1 2 3 4 5 6 7 | let mas=new Array(1,25,'Привет'); function showElement(){ for(i=0;i<3;i++) document.writeln(mas[i]); } showElement(); |
Результат:
1 25 Привет
1 2 3 4 5 6 7 8 | let mas=new Array(1,25,'Привет'); function showElement(){ for(let i in mas){ document.writeln(mas[i]); } } showElement(); |
Результат:
1 25 Привет
1 2 3 4 5 6 7 8 | let mas=new Array(1,25,'Привет'); function showElement(){ for(let i of mas){ document.writeln(i); } } showElement(); |
for in
выполняет перебор всех свойств объекта, а не только индексированных.В браузере имеются так называемые «псевдомассивы» – объекты, которые выглядят, как массив. То есть, у них есть свойство length и индексы, но они также могут иметь дополнительные свойства и методы. Однако цикл
for in
выведет и их.Цикл
for in
во много раз медленнее, чем for of
.
countries
– с названием стран, и population
– с населением этих стран. Вывести название страны и ее население (использовать метод document.write
).
Комментарии к выполнению:
- Вывод элементов массива оформить в виде функции.
- Сначала выполнить задание с помощью цикла
for с счетчиком
, затем — с помощью циклаfor in
.
let e = 1024; let table = [e, e + 1, e + 2, e + 3]; document.write(table); |
1 2 3 4 5 | let arr = [1, 2, 3]; arr[5] = 5; for (let i = 0; i < arr.length; i++) { document.write(arr[i] + "<br />"); } |
arr[5] = 5;
происходит расширение массива – в 5-й индекс заносится значение 5
. Цикл заполняет элементы типом undefined
, элементы которые мы не использовали — они остаются пустыми.delete
:
1 2 3 | let myColors = new Array("red", "green", "blue"); delete myColors[1]; alert(myColors); // red,,blue |
Свойства массива (объекта Array) в javaScript
Массив – предопределенный объект. Доступ и обращение к элементам массива осуществляется при помощи точечной нотации (через символ «.
«):
Название_объекта
.
свойство_объекта
Название_объекта.
метод_объекта(
параметры)
Пример:
mas.length // обращение к свойству length mas.sort() // вызов метода sort
length
✍ Решение:
1 2 3 4 | for (let i = 0; i<arr.length;i++){ alert(arr[i]); } alert(arr.length); |
В javascript для поиска элемента в массиве можно создать пользовательскую функцию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | let arr = new Array(); arr[0] = "element1"; arr[1] = "element2"; arr[2] = "element3"; function findValue(theValue){ for (let i = 0; i<arr.length;i++){ if(arr[i] == theValue) break; // если нашли - выход из цикла } if (i<arr.length) // если не нашли, то i=arr.length return i //если нашли - возвращаем индекс else return false; // если не нашли - возвращаем false } let elem=findValue("element2"); if (elem) alert ("элемент найден, его индекс="+elem) else alert("элемент не найден"); |
theValue
) — значение искомого элемента массива. В случае нахождения элемента функция возвращает индекс найденного элемента, если элемент не найден — функция возвратит false
. Пример вывода:
Введите день недели: пн вт ср чт пт сб вс >> вт вт - 1-й день недели, начиная с нуля
Методы массива (объекта Array) в javaScript
Рассмотрим некоторые javascript методы массива.
Часто используемым методом в javascript array является concat()
.
Метод javaScript concat()
— конкатенация массивов, объединяет два массива в третий массив, т.е. формирует и возвращает объединенный массив, содержащий все элементы исходного массива и значения всех аргументов, переданных методу
массив1
.
concat(
массив2)
Рассмотрим пример использования метода concat
1 2 3 4 | let a1= new Array(1, 2, "Звезда"); let а2 = new Array("a", "б", "в", "г"); let аЗ = a1.concat(a2); /* результат - массив с элементами: 1, 2, "Звезда", "а", "б", "в", "г" */ |
a
присвоить возвращаемое значение метода concat
, передав в этот метод два значения 4
и 5
. Что будет выведено на экран?:
1 2 3 | let a = [1, 2, 3]; a = ... document.write(a); |
Метод javaScript join(разделитель)
— создает строку из элементов массива с указанным разделителем между ними (преобразует все элементы массива в строки и объединяет их через указанный разделитель)
массив
.
join(
строка)
Пример использования метода join:
1 2 3 4 5 | let а = new array(1, 2, "Звезда") a.join(",") // значение - строка "1,2,Звезда" let а = new array(1, 2, "Звезда") a.join(" ") // значение - строка «1 2 Звезда» |
res
присвоить значение: вызов метода join
массива ar
; в метод передать аргумент (тег br
) и вывести на экран значение переменной res
1 2 3 | let arr = ["Edward", "Andrey", "Chris"] let res = ... document.write(res); |
Метод javaScript shift()
— удаляет первый элемент массива и возвращает результирующий массив, смещая все последующие элементы на одну позицию влево
имя_массива
.
shift()
Пример использования метода shift:
1 2 3 4 | let x = ["a", "b", "c", "d"]; x.shift(); document.write(x); //выведет на экран обозревателя строку b,c,d |
Метод javaScript рор()
— удаляет последний элемент массива. Результат работы метода -массив без последнего элемента
имя_массива
.
рор()
Пример использования метода рор:
1 2 3 4 | let x = ["a", "b", "c", "d"]; x.pop(); document.write(x); //выведет на экран обозревателя строку a,b,c. |
Присвоить значение метода
pop()
в переменную len
. Вывести отдельно результирующий массив и отдельно его удаленный элемент (значение переменной len
):
1 2 3 4 | let arr = ["January", "February", "March", "April", "May", "June"]; let len = ... document.write(arr.join(" ")+"</br>"); document.write(len); |
Метод javaScript unshift(значение)
— добавляет к массиву указанное значение в качестве первого элемента. Возвращает новую длину массива
имя_массива
.
unshift(
значение)
Пример использования метода unshift:
1 2 3 | let x = ["a", "b", "c", "d"]; document.write(x.unshift("e")); //выведет на экран обозревателя число 5 |
Метод javascript push(значение)
— добавляет к массиву указанное значение в качестве последнего элемента и возвращает новую длину массива
имя_массива
.
push(
значение)
Пример использования метода push:
1 2 3 | let x = ['a', 'b', 'c', 'd']; document.write(x.push('e')); //выведет на экран обозревателя число 5 |
Метод javaScript reverse()
— изменяет порядок следования элементов массива на противоположный
имя_массива
.
reverse()
Пример использования метода reverse:
1 2 3 4 | let x = new Array(); x[0] = 0; x[2] = 2; x[4] = 4; document.write(x.reverse()); //выведет на экран обозревателя строку 4,,2,,0 |
1 2 3 | let a = new Array(11, 22, 33, 44, 55, 66, 77); a.reverse(); document.write(a.join("<br/>")); |
Метод javascript slice(индекс1 [, индекс2])
— создает массив из элементов исходного массива с индексами указанного диапазона (возвращает подмассив или срез указанного массива).
имя_массива
.
slice(
индекс1[,
индекс2])
Пример:
1 2 3 4 5 | let a = new Array(1, 2, 'Звезда' , 'а' , 'b'); alert(a.slice(1,3)); // массив с элементами: 2, "Звезда" alert(a.slice(2)); // массив с элементами: "Звезда", "а", “b” |
t
возвращаемое значение метода slice()
, который будет возвращать первых 3 значения из массива:
1 2 3 | let a = [1, 2, 3, 4, 5, 6, 7]; let t = ... document.write(t); |
Метод javaScript sort([compareFunction])
— сортирует (упорядочивает) элементы массива (элементы сортируются путём преобразования их в строки и сравнения строк в порядке следования кодовых точек Unicode). Необязательный параметр compareFunction
указывает функцию, определяющую порядок сортировки, может пригодиться при сортировке целочисленного массива (см. ниже).
имя_массива
.
sort(
)
Пример использования метода sort():
1 2 3 4 5 6 7 8 9 | let arr = [1, 2, 16]; arr.sort(); document.write(arr.join("<p>")); /* Выведет на экран: 1 16 2 */ |
Для числового сравнения, вместо строкового, функция сравнения может просто вычитать b
из a
. Следующий пример будет сортировать массив по возрастанию:
let numbers = [4, 2, 5, 1, 3]; numbers.sort(function(a, b) { return a - b; }); document.write(numbers); // [1, 2, 3, 4, 5] |
Метод javaScript splice(индекс, количество)
— удаляет из массива несколько элементов и возвращает массив из удаленных элементов или заменяет значения элементов. Т.е. этот метод используется для вставки и удаления элементов из массива.
имя_массива
.
splice(
индекс,
количество)
Пример использования метода splice:
1 2 3 4 | let a = new Array('Ivan','Max','Peter',12,5); let x = a.splice(1,3); document.write(x+"<br>"); // Max,Peter,12 document.write(a); // Ivan,5 |
d
присвоить значение метода splice()
, который должен удалить числа 2
, 3
, 4
из массива:
1 2 3 | let a = [1, 2, 3, 4, 5, 6, 7]; let d = ... document.write(a); |
toLocaleString()
, toString()
— преобразуют содержимое массива в символьную строку
reverse()
+
» (метод javaScript join
– 1+2+3+4+5)1, 2, 5, 4, 6
и 8, 2, 5, 9, 5
. Найти медиану двух этих массивов одновременно (медиана — это числовое значение, которое делит отсортированный массив чисел на большую и меньшую половины. В отсортированном массиве с нечетным числом элементов медиана — это число в середине массива, с четным — ищем среднее арифметическое двух элементов посередине). Для решения задачи понадобятся стандартные функции.
отсортированные элементы массивов: 1, 2, 2, 4, 5, 5, 6, 7, 8, 9 медиана: 5
Ассоциативный массив в javaScript
К сожалению, в javascript не предусмотрены методы для работы с ассоциативными массивами. По этой причине они используются достаточно редко. Однако, их удобно использовать для хранения данных, т.к. их использование облегчает запоминание элементов.
Пример создания ассоциативного массива:
let pupil = { name: "Andrey", group: "1" }; |
Другой пример:
1 2 3 4 5 6 7 8 | let m_list = new Object(); m_list["fat"] = "Полный"; m_list["small"] = "Маленький"; m_list["name"] = "Иван"; for (let x in m_list) //выведем на экран все элементы document.write(m_list[x] + "<br>"); |
1 2 3 4 | let laptop = ( cpu: "Core i7", ram: "4 GB", screen: "19" ); let Key = prompt("Введите интересующий параметр (ram, cpu, screen)"); let value = laptop[key]; document.write(value); |
Дан ассоциативный массив стран и рек (протекающих в каждой из этих стран).
Выполните задания:
1) Для каждой реки укажите, в какой стране она протекает.
2) Проверьте, есть ли введенное название реки в массиве (вывести есть или нет)
3) Добавьте новую пару страна-река в массив.
4) Удалите из массиву реку (название реки запросить).
Многомерные массивы
Так как массивы JavaScript могут в качестве элементов использовать другие массивы, то почему бы эту возможность не использовать для создания многомерных массивов. Для доступа к элементам в массиве массивов достаточно использовать квадратные скобки дважды.
1 2 3 4 5 6 7 | let matrica = [ [5, 5, 5], [1, 5, 1], [2, 2, 2] ]; document.write(matrica[1][1]); //выбран элемент по центру (5) |
document.write(matrica[1][1]); //выбран элемент по центру (5) for(let i = 0; i< 3; i++){ for (let j=0; j<3; j++) { document.write(matrica[i][j]+" "); } document.write("<br>"); } |
При исходной матрице:
[3, 15, 25, 15, -2], [4, 11, 5, 11, 12], [12, 22, 12, -3, -10] [22, 22, 32, -33, -12] [2, 22, 12, -12, -10]
Результат должен быть:
3 -2 4 5 -3 2
В 14 задании опечатка. Даны массивы 1, 2, 5, 4, 6 и 8, 2, 5, 9, 5 а в ответе откуда то взялась 7 и пропала одна 5 (1, 2, 2, 4, 5, 5, 6, 7, 8, 9 ).
Еще последнее задание идет под номером 15, хотя должно быть 17.