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

241 0 Новини високих технологій

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

[thumb]http://hi-news.pp.ua/uploads/posts/2018-07/bagatovimrn-asocativn-javascript-masivi-robota-z-masivami-javascript_671.jpeg[/thumb]

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

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


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

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


[thumb]http://hi-news.pp.ua/uploads/posts/2018-07/bagatovimrn-asocativn-javascript-masivi-robota-z-masivami-javascript_562.jpeg[/thumb]

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

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

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

Ще варіант - це створення масиву за допомогою конструктора з функцією Array. В цьому випадку оголошується змінна, наприклад, "а", і за допомогою ключового слова "new" в неї поміщається значення "Array". Називати змінні простими літерами вважається кращою практикою, тому присвоювати такі значення найкраще тільки для навчальних цілей, а не в роботі з кодом. І ще одне зауваження: з конструктором потрібно бути уважними та обережними, так як при його допомозі можна передавати не тільки перелік якихось значень (наприклад, рядків) - в такому конструкторі іноді присутній і тільки одне число. Але при цьому не створюється масив з даними, відповідними цього числа. Якщо написати рядок коду: "var a new = (5)", то в масиві просто з'являться 5 пустих клітинок. При виводі на консоль ми отримаємо квадратні дужки з порожніми місцями, відокремлені комами. Якщо написати через кому "13", то вийде масив з двох елементів, перший з яких дорівнює одиниці, а другий - трійці. При зверненні до цього масиву він виводиться на консоль перелік елементів в наступному вигляді:[1, 3].
[thumb]http://hi-news.pp.ua/uploads/posts/2018-07/bagatovimrn-asocativn-javascript-masivi-robota-z-masivami-javascript_583.jpeg[/thumb]

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

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

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

Значення довжини масиву можна змінювати вручну. Для приклад, можна створити простий масив з трьома однаковими елементами і вивести на консоль довжину його рядки. Вона буде дорівнює трьом. Якщо тепер ми будемо звертатися до різних елементів цього масиву, то будемо отримувати їх значення. Але якщо потім звернемося до елемента, у якого немає значення, то отримаємо "undefined", що означає "не визначено". І в цьому випадку починається не зовсім звичайна поведінка властивості довжини масиву.
[thumb]http://hi-news.pp.ua/uploads/posts/2018-07/bagatovimrn-asocativn-javascript-masivi-robota-z-masivami-javascript_674.jpeg[/thumb]

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

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

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

Якщо в якості прикладу ми знову звернемося до масиву, який поставили за допомогою new, і спробуємо вивести його довжину в консоль, то ми отримаємо 0 так як він не містив елементів. Але якщо те ж властивість застосувати до масиву, створеному за допомогою конструктора, тоді, незважаючи на те, що він порожній, довжина рядка дорівнюватиме того числа, яке знаходилося в круглих дужках. Length всі одно вважатиме всі елементи, навіть якщо вони порожні.
[thumb]http://hi-news.pp.ua/uploads/posts/2018-07/bagatovimrn-asocativn-javascript-masivi-robota-z-masivami-javascript_475.jpeg[/thumb]
Для масиву, який містив список з декількох непустих елементів, це значення виявиться рівним їх кількості. Значення Length можна змінювати, додаючи після знака "=" бажане значення. І якщо ми змінимо його на яке-небудь значення менше поточного, тоді всі елементи, які будуть йти за ним, відсікаються від масиву. Наприклад, якщо довжина масиву дорівнює п'яти, а Length - двох, тоді всі елементи після другого пропадуть при зверненні до нього. Це один з простих способів відрізати частину масиву, розташовану в його кінці. Пошук в масиві javascript здійснюється за допомогою функції find і методу indexOf об'єкта Array.

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

Досить легко створити багатовимірний масив в javascript з об'єктів та інших елементів. Так як значення елементів ніяк не фіксовані, то в один масив можна помістити число, об'єкт, рядок і інший масив, причому одночасно. В результаті ми отримаємо масив з чотирма значеннями, кожне з яких буде окремим типом. Таким чином можна створювати багатомірні масиви в javascript.
[thumb]http://hi-news.pp.ua/uploads/posts/2018-07/bagatovimrn-asocativn-javascript-masivi-robota-z-masivami-javascript_326.jpeg[/thumb]
Якщо в одному масиві знаходиться декілька, то першим буде відповідати нульовий індекс, другого - перший і так далі. Тобто кожен з них буде виводитись як елемент. Двовимірний масив в javascript - це багатовимірний масив з 2 рівнями оголошення. Існують також тривимірні, чотиривимірні і так далі. Для того щоб отримати якусь частину масиву всередині іншого масиву, до його елементу також потрібно звернутися за індексом, наприклад: a[0] [1]. Програміст може створювати багатомірні масиви в javascript з практично нескінченною кількістю елементів.

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

Так як масив - це об'єкт, то значення його елементів є властивостями об'єктів. Тому працювати з ними можна аналогічним чином. Видаляється елемент з масиву за допомогою властивості delete і звернення до індексу. В багатовимірних масивах при видаленні якоїсь їх частини утворюється порожнеча, яка буде відділена коми. Але якщо при видаленні ви хочете, щоб інші значення змістилися вгору і простору між ними не залишалося, тоді для видалення елемента використовується метод Splice. Він приймає два параметри. Перший - це індекс, з якого потрібно почати, а другий - кількість елементів, які потрібно видалити. Цей метод дозволяє видаляти елементи в масиві, зрушуючи всі наступні таким чином, що порожнього простору між ними не залишається. Додати елемент в масив javascript можна за допомогою звернення до індексу. Нове значення вже існуючого елементу присвоюється так: a[0]= 5 де а - це сам елемент, у квадратних дужках розташовується його індекс, а після знака "=" - нове значення. Абсолютно новий елемент додається за допомогою індексу, який ще не задіяний у масиві. Якщо розмір масиву в javascript невідомий, можна скористатися змінної Length і написати так: a[a.length]- це буде число, відповідне "останнім індексом +1".
[thumb]http://hi-news.pp.ua/uploads/posts/2018-07/bagatovimrn-asocativn-javascript-masivi-robota-z-masivami-javascript_997.jpeg[/thumb]

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

Для перебір масиву можна користуватися спеціальною формою циклу for in. Але досвідчені програмісти не рекомендують застосовувати її. Справа в тому, що якщо задати масив за допомогою конструктора, цей метод видасть лише одну цифру. При використанні лічильника із змінною від нуля до значення довжини рядка в результаті можна отримати всі елементи відразу. Сортування масивів здійснюється за допомогою методу sort. Але в цьому випадку початкове значення потрібно зберегти, якщо воно ще знадобиться в майбутньому.

Популярі новини
Загрузка...