Новини високих технологій
» » Багатовимірні, асоціативні JavaScript-масиви. Робота з масивами JavaScript

Багатовимірні, асоціативні JavaScript-масиви. Робота з масивами JavaScript

2-07-2018, 13:12
654
Масиви в мовах програмування Java і C# - це впорядкований набір даних. Він складається з елементів, доступ до яких здійснюється за допомогою індексів. Масив у мовах програмування Java і C# можна представити як стрічку з однакових за розміром осередків. У нього є тип, який визначається даними. Наприклад, може бути масив чисел, рядків або об'єктів. Тому всі комірки і однакові за розмірами, так як у кожній з них зберігається однаковий тип даних. Якщо потрібно зберігати різні дані, тоді знадобиться зробити кілька різних масивів.

Простота використання масивів у мовах програмування Java і C#

Те, що осередки мають однаковий розмір, дозволяє зручно пересуватися по них. У програміста є індекси для доступу, але так як відомо, що всі дані зберігаються разом і фізично знаходяться у певній послідовності, то легко можна розрахувати, де розміщуються потрібні дані. Знаючи про це і про те, скільки пам'яті займає кожна комірка, легко дізнатися розташування певної інформації заданого типу. Наприклад, в комірці зберігається число, і ми знаємо, що 1 клітинка займає 8 біт, тобто один байт. Тоді, для того щоб перейти до осередку №3 від самого початку масиву нам потрібно відрахувати два байти інформації, або 16 біт. Всі ці правила і лімітування при роботі з масивами в мовах програмування Java і C# дуже зручні і допомагають легко орієнтуватися в даних.


Масиви в jаvascript і їх особливості

З jаvascript все інакше, і визначення масиву не має нічого спільного з тим, що вище. Масив - це об'єкт. Він нагадує список елементів і володіє додатковими властивостями і методами. Тип і розмір елементів у масивах jаvascript не фіксовані, а "довжина" самого масиву не стає його верхньою межею. Це означає, що в одному масиві можуть зберігатися різні типи даних: числа, рядки, об'єкти і т. д. Ніхто не контролює з точки зору мови те, що буде зберігатися в одному блоці. Розмір осередків також не зафіксовано з-за цього властивості масиву jаvascript. Є поняття "довжини", але це просто якесь властивість об'єкта, з яким можна працювати певним чином. Існує також поняття асоціативного масиву в jаvascript. Такі об'єкти складаються з пар "ключ-значення". Значення в них пов'язані з ключами. Тобто при зверненні до них повертається значення ключа. Асоціативний масив в jаvascript - той, у якого в якості ключів виступають рядки.


Як створити масив у мові jаvascript

Для того щоб створити масив, спочатку потрібно оголосити змінну myArray наступним чином: var myArray =[]. Ми отримаємо масив без елементів. За допомогою класичних квадратних дужок, які використовуються у більшості мов програмування, створюється порожній масив. Тепер можна з ним працювати. Інший варіант - створити масив з даними і відразу ж заповнити його. Це може бути перелік міст, місяців і інші значення. Усі вони будуть розташовуватися у масиві jаvascript в певному порядку. У першого елемента індекс "0", так як у програмуванні нумерація завжди починається з нуля, індекс наступного елемента - "1" і так далі. Це той спосіб створення масиву за допомогою квадратних дужок, який рекомендується використовувати.

Варіант створення масиву за допомогою конструктора

Ще варіант - це створення масиву за допомогою конструктора з функцією Array. В цьому випадку оголошується змінна, наприклад, "а", і за допомогою ключового слова "new" в неї поміщається значення "Array". Називати змінні простими літерами вважається кращою практикою, тому присвоювати такі значення найкраще тільки для навчальних цілей, а не в роботі з кодом. І ще одне зауваження: з конструктором потрібно бути уважними та обережними, так як при його допомозі можна передавати не тільки перелік якихось значень (наприклад, рядків) - в такому конструкторі іноді присутній і тільки одне число. Але при цьому не створюється масив з даними, відповідними цього числа. Якщо написати рядок коду: "var a new = (5)", то в масиві просто з'являться 5 пустих клітинок. При виводі на консоль ми отримаємо квадратні дужки з порожніми місцями, відокремлені комами. Якщо написати через кому "13", то вийде масив з двох елементів, перший з яких дорівнює одиниці, а другий - трійці. При зверненні до цього масиву він виводиться на консоль перелік елементів в наступному вигляді:[1, 3].

Довжина масиву

У масивів в jаvascript є властивість Length. Воно означає розмір масиву, його довжину. Але цей метод не завжди вірно спрацьовує. У деяких випадках реальна довжина масиву будемо зовсім іншою. Тому програмісту потрібно зрозуміти та запам'ятати, що це властивість насправді не говорить про реальну кількість елементів, хоча в більшості випадків це саме так. Length - це "індекс останнього елемента + 1". Тому якщо порівнювати цю властивість з аналогічним у мові C#, то це б відповідало реальності. І "індекс останнього елемента + 1" завжди означав кількість елементів в масиві. Але робота з масивами в jаvascript відрізняється від інших мов програмування.

Зміна довжини масиву

Значення довжини масиву можна змінювати вручну. Для приклад, можна створити простий масив з трьома однаковими елементами і вивести на консоль довжину його рядки. Вона буде дорівнює трьом. Якщо тепер ми будемо звертатися до різних елементів цього масиву, то будемо отримувати їх значення. Але якщо потім звернемося до елемента, у якого немає значення, то отримаємо "undefined", що означає "не визначено". І в цьому випадку починається не зовсім звичайна поведінка властивості довжини масиву.

Як розраховується кількість елементів у масиві

Незважаючи на те що після елемента з певним індексом, наприклад, третім, вже немає інших даних, можна вибрати значення елемента з індексом "10". Таке значення задається елементу з абсолютно будь-яким індексом. Тоді ми отримаємо безліч невизначуваних значень до тих пір, поки не доберемося до елемента із заданим значенням. Таким чином, хоча за фактом у нас може бути всього чотири елемента в масиві з безліччю невизначених між ними, довжина рядка при цьому буде дорівнює "11", тому що індексом останнього елемента виявилося число "10", а значення властивості розраховується як "індекс останнього елемента + 1". Тому, якщо потрібно довідатися, скільки елементів даних у масиві насправді, виключаючи невизначені, не потрібно покладатися на Length.

Особливості спрацьовування властивості Length

Якщо в якості прикладу ми знову звернемося до масиву, який поставили за допомогою new, і спробуємо вивести його довжину в консоль, то ми отримаємо 0 так як він не містив елементів. Але якщо те ж властивість застосувати до масиву, створеному за допомогою конструктора, тоді, незважаючи на те, що він порожній, довжина рядка дорівнюватиме того числа, яке знаходилося в круглих дужках. Length всі одно вважатиме всі елементи, навіть якщо вони порожні.
Для масиву, який містив список з декількох непустих елементів, це значення виявиться рівним їх кількості. Значення Length можна змінювати, додаючи після знака "=" бажане значення. І якщо ми змінимо його на яке-небудь значення менше поточного, тоді всі елементи, які будуть йти за ним, відсікаються від масиву. Наприклад, якщо довжина масиву дорівнює п'яти, а Length - двох, тоді всі елементи після другого пропадуть при зверненні до нього. Це один з простих способів відрізати частину масиву, розташовану в його кінці. Пошук в масиві jаvascript здійснюється за допомогою функції find і методу indexOf об'єкта Array.

Багатовимірні масиви і їх створення

Досить легко створити багатовимірний масив в jаvascript з об'єктів та інших елементів. Так як значення елементів ніяк не фіксовані, то в один масив можна помістити число, об'єкт, рядок і інший масив, причому одночасно. В результаті ми отримаємо масив з чотирма значеннями, кожне з яких буде окремим типом. Таким чином можна створювати багатомірні масиви в jаvascript.
Якщо в одному масиві знаходиться декілька, то першим буде відповідати нульовий індекс, другого - перший і так далі. Тобто кожен з них буде виводитись як елемент. Двовимірний масив в jаvascript - це багатовимірний масив з 2 рівнями оголошення. Існують також тривимірні, чотиривимірні і так далі. Для того щоб отримати якусь частину масиву всередині іншого масиву, до його елементу також потрібно звернутися за індексом, наприклад: a[0] [1]. Програміст може створювати багатомірні масиви в jаvascript з практично нескінченною кількістю елементів.

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

Так як масив - це об'єкт, то значення його елементів є властивостями об'єктів. Тому працювати з ними можна аналогічним чином. Видаляється елемент з масиву за допомогою властивості delete і звернення до індексу. В багатовимірних масивах при видаленні якоїсь їх частини утворюється порожнеча, яка буде відділена коми. Але якщо при видаленні ви хочете, щоб інші значення змістилися вгору і простору між ними не залишалося, тоді для видалення елемента використовується метод Splice. Він приймає два параметри. Перший - це індекс, з якого потрібно почати, а другий - кількість елементів, які потрібно видалити. Цей метод дозволяє видаляти елементи в масиві, зрушуючи всі наступні таким чином, що порожнього простору між ними не залишається. Додати елемент в масив jаvascript можна за допомогою звернення до індексу. Нове значення вже існуючого елементу присвоюється так: a[0]= 5 де а - це сам елемент, у квадратних дужках розташовується його індекс, а після знака "=" - нове значення. Абсолютно новий елемент додається за допомогою індексу, який ще не задіяний у масиві. Якщо розмір масиву в jаvascript невідомий, можна скористатися змінної Length і написати так: a[a.length]- це буде число, відповідне "останнім індексом +1".

Перебір і сортування масивів в jаvascript

Для перебір масиву можна користуватися спеціальною формою циклу for in. Але досвідчені програмісти не рекомендують застосовувати її. Справа в тому, що якщо задати масив за допомогою конструктора, цей метод видасть лише одну цифру. При використанні лічильника із змінною від нуля до значення довжини рядка в результаті можна отримати всі елементи відразу. Сортування масивів здійснюється за допомогою методу sort. Але в цьому випадку початкове значення потрібно зберегти, якщо воно ще знадобиться в майбутньому.
Цікаво по темі
Управління даними: JavaScript join()
Управління даними: JavaScript join()
Рядок - це послідовність символів. Масив - сукупність елементів. Кожна з цих конструкцій має власної функціональністю, а поєднання двох функцій
Приклади застосування методу JavaScript length
Приклади застосування методу JavaScript length
Довжина рядка, числа або іншого елемента скрипта має істотне значення. Особливістю підходу мови jаvascript до поняття довжини є можливість
Об'єкти та масиви PHP: array push & pop
Об'єкти та масиви PHP: array push & pop
Стекова організація даних зручна для створення динамічної функціональності. Масиви на PHP, функції push & pop на перших і останніх елементах
Як визначити кількість елементів у масиві PHP?
Як визначити кількість елементів у масиві PHP?
При використанні масивів має значення кількість містяться в них даних. Особливості синтаксису і логіки мови PHP дозволяють динамічно визначати
JavaScript, масиви: опис
JavaScript, масиви: опис
jаvascript – сучасна мова програмування, він унікальний у частині синтаксису і семантики. Має специфіку...
Javascript Array для збереження необмеженої кількості змінних
Javascript Array для збереження необмеженої кількості змінних
Логічно масив займає проміжне положення між змінними і об'єктами. Практично не слід надавати особливого значення словам. У програмі є змінні і код.