< > ↑ Вгору

1. JavaScript об'єкти

Javascript - об'єктно-орієнтована мова. Це означає, що з деякими типами даних можна працювати як з об'єктами, що дозволяє застосовувати до них додаткові функції для роботи з об'єктами. Наприклад, з рядками можна працювати і як зі звичайним типом даних і як з об'єктами:

// звичайна строкова змінна myStr:
var myStr = "Текст";

// створення строкового об'єкта myStr:
var myStr = new String();

З усіма цими об'єктами ми познайомимося пізніше, з деякими з них ми частково вже знайомі.

Object - об'єкт, який міститься у всіх інших об'єктах і забезпечує їх загальну функціональність.

Об'єкт function - функції є об'єктами першого класу, тобто можуть присвоюватися змінним, виступати аргументами інших функцій і бути результатом функцій

Оголошення нових об'єктів відбувається однаково, незалежно від об'єкта (використовується службове слово new):

var arr = new Object();

var str = new String();

var arr = new Array();

Як видно з прикладу, в javascript оголошення масиву відбувається точно так само, як і у інших об'єктів.

2. JavaScript масиви, тип даних Array

Тепер докладніше розглянемо об'єкт масив.

Масив - упорядкований набір даних.

Доступ до елементів масиву здійснюється за допомогою порядкового номера - індексу. Таким чином, масив - об'єкт, який представляє собою проіндексований набір елементів.

Приклад: Створити масив arr. Присвоїти значення трьох елементів створеного масиву. За допомогою діалогового вікна  alert()  вивести значення елемента масиву з індексом 2. Вивести кількість елементів масиву.

Рішення:

var arr = new Array();
arr[0] = "element1";
arr[1] = "element2";
arr[2] = "element3";
alert(arr[2]);
alert("Число елементів" + arr.length);

У javascript довжина масиву - властивість  length  .

3. Javascript створення масиву

Створення елементів масиву можливо декількома способами:


  1. var earth = new Array(4); /* масив з 4-х елементів*/
    earth[0] = "Планета";
    earth[1] = "24 часа";
    earth[2] = 6378;
    earth[3] = 365.25;


  2. var earth = new Array("Планета", "24 часа", 6378, 365.25);


  3. var earth = new Array(); // порожній масив
    earth.xtype = "Планета";
    earth.xday = "24 часа";
    earth.radius = 6378;
    earth.period = 365.25;


  4. var country = ["Україна", "Білорусія", "Казахстан"];

4. Javascript: робота з масивами

Звернення або доступ до елементів масиву в javaScript відбувається так:

var mas=new Array(1,25,'Привіт');

mas[0]='Бувай';
mas[1]=35;

Пояснення: При ініціалізації масиву елемент mas[0] дорівнював 1. Потім ми змінили його значення на 'Бувай'. Значення елемента масиву mas[1] було змінено з 25 на 35.

Вивід елементів масиву

При виведенні значень масиву в документ за допомогою методу write, його елементи виводяться через кому:

var mas=new Array(1,25,'Привіт');
document.write(mas)

Результат:

1,25,Привіт

  1. Розглянемо, як здійснюється в javascript висновок масиву з використанням звичайного циклу  for  :

    var mas=new Array(1,25,'Привіт');

    function showElement(){
        for(i=0;i<3;i++)
            document.writeln(mas[i]);
    }
    showElement();

    Результат:

    1 25 Привіт

  2. Використання циклу  for in  для перебору елементів масиву:

    var mas=new Array(1,25,'Привіт');

    function showElement(){
        for(var i in mas){
            document.writeln(mas[i]);
        }
    }
    showElement();

    Результат:

    1 25 Привіт

Завдання array 5_1. Створити два масиви:  countries   - з назвою країн, і  population   - з населенням цих країн. Вивести назву країни і її населення (використовувати метод  document.write  ).

Коментарі до виконання:

  • Вивід елементів масиву оформити у вигляді функції.

  • Спочатку виконати завдання за допомогою циклу  for  з лічильником, потім - за допомогою циклу  for in  .

Завдання array 5_2. Що виведе на екран наступний фрагмент коду?

var e = 1024;
var table = [e, e + 1, e + 2, e + 3];
document.write(table);

Приклад: Що виведе на екран наступний фрагмент коду?

var arr = [1, 2, 3];
arr[5] = 5;
    for(var i = 0; i < arr.length; i++) {
document.write(arr[i] + "<br/>");
}

Пояснення: У прикладі в рядку  arr[5] = 5;  відбувається розширення масиву - в 5-й індекс заноситься значення  5  . Цикл заповнює елементи типом  undefined  , елементи які ми не використали - вони залишаються порожніми.

Видалення елементів масиву

У javascript видалити елемент масиву можна за допомогою оператора  delete  :

var myColors = new Array("red", "green", "blue");
delete myColors[1];
alert(myColors); // red,,blue

Завдання array 5_3. Створити масив з трьох елементів, значення елементів запитувати у користувача. Видалити другий за рахунком елемент, після чого вивести елементи масиву на екран, кожен елемент з нового рядка

5. Властивості масиву (Array) в javaScript

Масив - зумовлений об'єкт. Доступ і звернення до елементів масиву здійснюється за допомогою точкової нотації (через символ « . «):

Назва_об'єкта . властивість_об'єкта
Назва_об'єкта . метод_об'єкта ( параметри ) 

Приклад:

mas.length // звернення до властивості length
mas.sort() // виклик методу sort

Приклад: Вивести елементи масиву на екран, в якості кінцевого значення лічильника циклу використовувати властивість масивів  length 

Рішення:

for (var i = 0; i<arr.length;i++){
    alert(arr[i]);
}
alert(arr.length);

Пошук елемента в масиві

У javascript пошук елемента в масиві можна здійснити через функцію:

var arr = new Array();
arr[0] = "element1";
arr[1] = "element2";
arr[2] = "element3";
function findValue(theValue){
    for (var i = 0; i<arr.length;i++){
        if(arr[i] == theValue)
            break; // якщо знайшли - вихід з циклу
    }
    if (i<arr.length) // якщо не знайшли, то i=arr.length
        return i // якщо знайшли - повертаємо індекс
    else
        return 0; // якщо не знайшли - повертаємо 0

}
var elem=findValue("element2");
if (elem) alert ("елемент знайдений, його індекс ="+elem)
else alert("елемент не знайдений");

Пояснення: У прикладі функція, організована для пошуку елемента масиву, має один аргумент ( theValue ) - значення шуканого елемента масиву. У разі знаходження елемента функція повертає індекс знайденого елементу, якщо елемент не знайдений - функція поверне  0 .

Завдання array 5_4. Створити масив, елементами якого є назви днів тижня. Виводити номер дня тижня (номер елемента масиву), що містить введенy користувачем назву дня тижня (використовувати функцію з параметром, яка повертає значення номера).

6. Методи масиву (Array) в javaScript

Розглянемо деякі javascript методи масиву.


  1. Часто використовуваним методом в javascript array є  concat()  .
    Метод javaScript  concat()  - конкатенація масивів, об'єднує два масиви в третій масив, тобто формує і повертає об'єднаний масив, що містить всі елементи вихідного масиву і значення всіх аргументів, переданих методу

    ім'я_масиву1 . concat ( масив2 ) 

    Розглянемо приклад використання методу concat:

    var a1= new Array(1, 2, "Звезда");
    var а2 = new Array("a", "б", "в", "г");
    var аЗ = a1.concat(a2);
    /* результат - масив з елементами: 1, 2, "Зірка", "а", "б", "в", "г" */

    Завдання array 5_5. Доповніть код згідно із завданням:
    В змінну  a  привласнити повертане значення методу  concat  , передавши в цей метод два значення
     4  і  5  . Що буде виведено на екран ?:

    var a = [1, 2, 3];
    a = ...
    document.write(a);


  2. Метод javaScript  join(роздільник)  - створює рядок з елементів масиву з вказаним роздільником між ними (перетворює всі елементи масиву в рядки і об'єднує їх через вказаний роздільник)

    ім'я_масиву . join ( рядок ) 

    Приклад використання методу join:

    var а = new array(1, 2, "Звезда")
    a.join(",") // значення - рядок "1,2, Зірка"

    var а = new array(1, 2, "Звезда")
    a.join(" ") // значення - рядок "1 2 Зірка"

    Завдання array 5_6. Доповніть код, згідно із завданням:
    У рядку оголошення змінної  res  привласнити значення: на масиві  arr  викликати метод  join  , в який передати аргумент (тег  br  ) і вивести на екран значення змінної  res  

    var arr = ["Edward", "Andrey", "Chris"]
    var res = ...
    document.write(res);


  3. Метод javaScript  shift()  - видаляє перший елемент масиву і повертає результуючий масив, зміщуючи всі наступні елементи на одну позицію вліво

    ім'я_масиву . shift () 

    Приклад використання методу shift:

    var x = ["a", "b", "c", "d"];
    x.shift();
    document.write(x);
    // виведе на екран оглядача рядок b, c, d.


  4. Метод javaScript  рор()  - видаляє останній елемент масиву і повертає результуючий масив

    ім'я_масиву . pop () 

    Приклад використання методу pop:

    var x = ["a", "b", "c", "d"];
    x.pop();
    document.write(x);
    // виведе на екран оглядача рядок a, b, c.

    Завдання array 5_7. Доповніть код згідно з інструкцією:
    Присвоїти значення методу  pop()  в змінну  len . Вивести окремо результуючий масив і окремо його віддалений елемент (значення змінної  len ):

    var arr = ["January", "February", "March", "April", "May", "June"];
    var len = ...
    document.write(arr.join(" ")+"</br>");
    document.write(len);


  5. Метод javaScript  unshift(значення)  - додає до масиву вказане значення в якості першого елемента

    ім'я_масиву . unshift ( значення ) 

    Приклад використання методу unshift:

    var x = ["a", "b", "c", "d"];
    document.write(x.unshift("e"));
    // виведе на екран оглядача число 5


  6. Метод javascript  push(значення)  - додає до масиву вказане значення в якості останнього елемента і повертає нову довжину масиву

    ім'я_масиву . push ( значення ) 

    Приклад використання методу push:

    var x = ["a", "b", "c", "d"];
    document.write(x.push("e"));
    // виведе на екран оглядача число 5


  7. Метод javaScript &bsp;reverse()  - змінює порядок проходження елементів масиву на протилежний

    ім'я_масиву . reverse () 

    Приклад використання методу reverse:

    var x = new Array();
    x[0] = 0; x[2] = 2; x[4] = 4;
    document.write(x.reverse());
    // виведе на екран оглядача рядок 4,,2,,0

    Завдання array 5_8. Що виведе на екран наступний фрагмент коду?

    var a = new Array(11, 22, 33, 44, 55, 66, 77);
    a.reverse();
    document.write(a.join("<br/>"));


  8. Метод javascript  slice(індекс1 [, індекс2])  - створює масив з елементів вихідного масиву з індексами зазначеного діапазону (повертає підмасив зазначеного масиву).

    ім'я_масиву . slice  ( індекс1  [,  індекс2 ]) 

    Приклад:

    var a = new Array(1, 2, 'Звезда' , 'а' , 'b');
    alert(a.slice(1,3));
    // масив з елементами: 2, "Зірка"
    alert(a.slice(2));
    // масив з елементами: "Зірка", "а", "b"

    Завдання array 5_9. Доповніть код згідно із завданням:
    Присвоїти змінній  t  значення що повертається методу  slice()  , який буде повертати перших 3 значення з масиву:

    var a = [1, 2, 3, 4, 5, 6, 7];
    var t = ...
    document.write(t);


  9. Метод javaScript  sort()  - сортує (впорядковує) елементи масиву (якщо рядкові елементи, то спочатку відбудеться сортування тексту, потім сортування за алфавітом)

    ім'я_масиву . sort () 

    Приклад використання методу sotr:

    var arr = [1, 16, 2];
    arr.sort();
    document.write(arr.join("<p>"));
    /*
    Выведет на экран:
     1
     16
     2
    */


  10. Метод javaScript  splice(індекс, кількість)  - видаляє з масиву кілька елементів і повертає масив з видалених елементів або замінює значення елементів. Тобто цей метод використовується для вставки і видалення елементів з масиву.

    ім'я_масиву . splice ( індекс ,  кількість ) 

    Приклад використання методу splice:

    var a = new Array('Ivan','Max','Peter',12,5);
    var x = a.splice(1,3);
    document.write(x+"<br>"); // Max,Peter,12
    document.write(a); // Ivan,5

    Завдання array 5_10. Доповніть код згідно із завданням:
    В змінну  d  присвоїти значення методу  splice()  , який повинен видалити числа  2  ,  3  ,  4  з масиву:

    var a = [1, 2, 3, 4, 5, 6, 7];
    var d = ...
    document.write(a);


  11.  toLocaleString() ,  toString()  - перетворять вміст масиву в символьний рядок

    Завдання array 5_11. Дан масив з чисел: 1, 2, 3, 4, 5. Роздрукувати масив в зворотному порядку (5, 4, 3, 2, 1), використовуючи функцію javaScript  reverse() 

    Завдання array 5_12. Дан масив з елементів: 'c', 5, 2, 'b', 3, 1, 4, 'a'. Роздрукувати масив, попередньо відсортувавши його по зростанню (1, 2, 3, 4, 5, a, b, c)

    Завдання array 5_13. Дан масив з елементів: 1, 2, 3, 4, 5. Роздрукувати вихідний масив і масив, що вийшов з елементів вихідного масиву, з роздільником « + » (метод javaScript  join  - 1 + 2 + 3 + 4 + 5)

7. Асоціативний масив в javaScript

Асоціативний масив - це абстрактний тип даних, по суті, аналог двовимірного масиву в javascript, що дозволяє зберігати пари виду «(ключ, значення)». Тобто асоціативні масиви дозволяють замість індексів використовувати строкові значення.

На жаль, в javascript не передбачені методи для роботи з асоціативними масивами. З цієї причини вони використовуються досить рідко. Однак, їх зручно використовувати для зберігання даних, тому що їх використання полегшує запам'ятовування елементів.

Приклад створення асоціативного масиву:

var pupil = { name: "Andrey", group: "1" };

Інший приклад:

var m_list = new Object();

m_list["fat"] = "Повний";
m_list["small"] = "Маленький";
m_list["name"] = "Іван";

for (var x in m_list) // виведемо на екран всі елементи
    document.write(m_list[x] + "<br>");

Завдання array 5_14. Виправити помилку (помилки) у фрагменті коду для коректної роботи:

var laptop = ( cpu: "Core i7", ram: "4 GB", screen: "19" );
var Key = prompt("Введіть параметр який вас цікавить (ram, cpu, screen)");
var value = laptop[key];
document.write(value);

8. Багатовимірні масиви

Так як масиви JavaScript можуть в якості елементів використовувати інші масиви, то чому б цю можливість не використовувати для створення багатовимірних масивів. Для доступу до елементів в масиві масивів досить використовувати квадратні дужки двічі.

var matrica = [
    [5, 5, 5],
    [1, 5, 1],
    [2, 2, 2]
];

document.write(matrica[1][1]); // обраний елемент по центру (5)

Завдання array 5_15. Дана матриця 5 х 5. Вивести елементи матриці, що належать інтервалу [-5; 7].

При вихідній матриці:

[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