Javascript Array для збереження необмеженої кількості змінних

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

javascript - мова браузера, тому не кожна задача потребує власних змінних масивах і об'єктах. У багатьох випадках цілком досить просто використовувати DOM (об'єктну модель документа). Але навіть в таких випадках правильне опис використовуваних даних завжди робить програму більш досконалою, зручною у використанні і подальшої доробки.

[img]http://hi-news.pp.ua/uploads/posts/2016-12/javascript-array-dlya-zberezhennya-neobmezhenoyi-klkost-zmnnih_1211.jpeg[/img]
Слова мають значення, але, іменуючи в програмі те, що підлягає використанню і зміни, доречно обмежитись словами "дані" і "змінні". Ну а вже якими вони будуть - javascript Array, Object або просто Integer - залежить від завдання, точніше від конкретного місця в ній.


Логіка коду і даних

Програмісти звикли маніпулювати даними. Були і донині є змінні в широкому спектрі уявлень (рядка, символи, числа, дати), як правило, окремо позиціонувалися масиви (останні пару десятків років) об'єкти. [
[thumb]http://hi-news.pp.ua/uploads/posts/2016-12/javascript-array-dlya-zberezhennya-neobmezhenoyi-klkost-zmnnih_232.jpeg[/thumb]
У певний момент часу сувора типізація даних стала реліквією, і тепер в кожному сучасному мові це може міняти не тільки зміст, але і тип. Добре це чи погано, буде видно, але у суворої типізації є свої позитивні риси. Проте якщо так склалося, то чому б зовсім не "растипировать" весь процес? В семантичному плані, тобто за межами синтаксису, будь-яка змінна має значення. А воно при будь-якому положенні речей змінюється. Послідовність змін - вже кількість, що в термінах javascript - element array. Інакше кажучи, якщо програміст вирішив не надавати значення типу змінної і поклав на мову турботу про належному і своєчасному перетворення типів, то чому б взагалі не спростити: є просто дані, ну а вже які вони будуть в точці застосування - число, рядок, масив або об'єкт - це вже кодом вирішувати. Ще більш правильно: це повинно само по собі визначати, що можна з ним робити і як саме.


Прості дані і синтаксис

Прості змінні представлені різними типами. Перетворення типів виконуються автоматично, коли в цьому виникає необхідність.
[thumb]http://hi-news.pp.ua/uploads/posts/2016-12/javascript-array-dlya-zberezhennya-neobmezhenoyi-klkost-zmnnih_318.jpeg[/thumb]
В даному прикладі описана проста змінна s, в якій буде формуватися результат роботи з javascript Array aCheck. Змінна i описана безпосередньо в циклі роботи з aCheck. Тут елементи масиву створюються за допомогою конструкції javascript Array push) представляють собою три значення різного типу. Перший цикл виводить рядок s назви типів, другий - власне значення. Перетворення типу виконується автоматично.
[thumb]http://hi-news.pp.ua/uploads/posts/2016-12/javascript-array-dlya-zberezhennya-neobmezhenoyi-klkost-zmnnih_319.jpeg[/thumb]
]

Про кількості елементів у масивах

В javascript Array не є асоціативним масивом. Доступ до елементів виконується за чисельним ключів, максимальну кількість елементів - 2 32 але експериментувати з граничними кількостями елементів не слід. Хороший алгоритм завжди має найближче кількість даних, а конструкція JavaSscript Array length введена в синтаксис зовсім не для контролю об'єму масиву в контексті його змісту. Значенням aCheck.length буде не завжди реальна кількість елементів. В javascript Array може містити стільки й того, що туди було відправлено, але щоб дізнатися, скільки саме, часом доводиться потрудитися.
[thumb]http://hi-news.pp.ua/uploads/posts/2016-12/javascript-array-dlya-zberezhennya-neobmezhenoyi-klkost-zmnnih_354.jpeg[/thumb]
У цьому прикладі, вираз aCheck[5]збільшує масив до шести елементів. Плекати надії, що функція length дасть значення 4 не виправдано.

Асоціативні масиви

Формально javascriptt Array можуть бути тільки звичайними, тобто доступ до елементів здійснюється за числовими індексами. Проте в реальності можна використовувати асоціативні ідеї.
[thumb]http://hi-news.pp.ua/uploads/posts/2016-12/javascript-array-dlya-zberezhennya-neobmezhenoyi-klkost-zmnnih_451.jpeg[/thumb]
Дуже проста і буденна задача сортування рядків таблиці по колонках може бути вирішена за допомогою асоціативного масиву. Точка в кружечку біля імені стовпця означає відсутність сортування, стрілка вгору - за спаданням, стрілка вниз - за зростанням. Клік на колонку змінює напрямок (варіант реалізації на javascript: Sort Array).
[img]http://hi-news.pp.ua/uploads/posts/2016-12/javascript-array-dlya-zberezhennya-neobmezhenoyi-klkost-zmnnih_4910.jpeg[/img]
У цьому прикладі, у масиві cSortCols формуються напрями сортування по кожній колонці (S, C, W, ). Значення напрямів тільки u, d. В конструкції for in всі зшивається в один рядок (код колонки, і напрямок сортування). Цей цикл переглядає всі елементи масиву, і використовувати функцію javascript Array length немає необхідності.
[thumb]http://hi-news.pp.ua/uploads/posts/2016-12/javascript-array-dlya-zberezhennya-neobmezhenoyi-klkost-zmnnih_865.jpeg[/thumb]

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

Гарна практика - писати 'var xMass =[];' або 'var yArr = {};'. У першому випадку буде визначено звичайний масив, у другому випадку - асоціативний. Використовувати варіант javascript New Array() можна, але зазвичай ця конструкція використовується для інших цілей, в основному для роботи з об'єктами. Створений масив можна відразу заповнити змінними, але, як правило, актуально заповнення і маніпулювання масивом в динаміці, в ході виконання програми. При необхідності сортування можна використовувати конструкцію javascript Sort Array, яка не відрізняється гнучкістю, але дозволяє керувати процесом за допомогою власної функції. Виклик: arr.sort() призводить до сортування у порядку слідування символів таблиці ASCII. Зворотна функція - перестановки елементів: arr.reverse(). Ця функція змінює порядок елементів масиву на зворотний. В обох випадках слово arr позначає масив. У першому випадку допускається використання власної функції сортування, тобто виклик arr.sort(myfunc(a,b)) приведе до виклику власної функції myfuct, яка повинна видати результат в залежності від даних: a і b. Якщо перше менше другого, то -1 якщо навпаки, то-1 а якщо a = b, то 0. Тут критерій порівняння визначається програмістом в функції myfunc.
[thumb]http://hi-news.pp.ua/uploads/posts/2016-12/javascript-array-dlya-zberezhennya-neobmezhenoyi-klkost-zmnnih_867.jpeg[/thumb]

Ідея активного елемента

Функція, що викликається в процесі сортування, може виконувати різні дії. З точки зору конструкції, в якій застосовується, вона не зобов'язана реагувати на вхідні параметри, а її результат - не тільки три числа -1 1 і 0. Будучи застосованою в масиві циклічно до кожного елементу, вона може перебудувати масив. Якщо уявити, що масив - це певний сенс, певна структура даних, то javascript Array перетворюється в змінну з змінюваним змістом. Якщо взяти за основу використання першого або останнього елемента масиву в якості його змісту, виконання функції sort може перетворити масив так, що першим/останнім стане інший елемент, як потрібно за умовами завдання. Така ідея може дозволити перебудувати алгоритм рішення таким чином, зокрема, що відпаде потреба у використанні конструкцій if () {} else {} switch () {case"; case"; }. Маніпулюючи вмістом масиву, можна переміщати елементи всередині нього, змінюючи тим самим зовнішню функціональність, яку можна отримувати через перший або останній елемент.
[thumb]http://hi-news.pp.ua/uploads/posts/2016-12/javascript-array-dlya-zberezhennya-neobmezhenoyi-klkost-zmnnih_943.jpeg[/thumb]

javascript Array: нелогічне використання

Всякий язик хороший тим, що дозволяє не тільки змінювати структуру і зміст даних, але і власне код. Ідея розглядати як змінну абстракцію, тобто спочатку не передбачаючи її типової статус, відкриває нові горизонти. Починаючись з абстракції, мінлива, масив або об'єкт дозволяють уявити процес обробки даних як функцію цих даних, причому в динаміці. Наприклад, читаючи текст, можна описати цей "текст", яке буде розбиватися на пропозиції - критерій "точка" (в контексті, тобто з урахуванням прийнятого синтаксису речень). Пропозиції будуть розбиватися на фрази (в контексті, кома і відповідний синтаксис). Далі слова і букви. Результат: можна працювати на рівні текстів, речень, слів. На кожному рівні можна створити функції "унікальності", що дозволить шукати подібне чи аналогічне. Можна створити функції застосування речень, фраз до інших даних.
[thumb]http://hi-news.pp.ua/uploads/posts/2016-12/javascript-array-dlya-zberezhennya-neobmezhenoyi-klkost-zmnnih_966.jpeg[/thumb]
Сучасне програмування давно не догма, але той факт, що створені за останні десятиліття синтаксичні конструкції і накопичений досвід відкривають непередбачені розробниками мов нові горизонти - ще належить відкрити і використовувати.

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