jаvascript - мова браузера, тому не кожна задача потребує власних змінних масивах і об'єктах. У багатьох випадках цілком досить просто використовувати DOM (об'єктну модель документа). Але навіть в таких випадках правильне опис використовуваних даних завжди робить програму більш досконалою, зручною у використанні і подальшої доробки.
Слова мають значення, але, іменуючи в програмі те, що підлягає використанню і зміни, доречно обмежитись словами "дані" і "змінні". Ну а вже якими вони будуть - jаvascript Array, Object або просто Integer - залежить від завдання, точніше від конкретного місця в ній.
Логіка коду і даних
Програмісти звикли маніпулювати даними. Були і донині є змінні в широкому спектрі уявлень (рядка, символи, числа, дати), як правило, окремо позиціонувалися масиви (останні пару десятків років) об'єкти. [
У певний момент часу сувора типізація даних стала реліквією, і тепер в кожному сучасному мові це може міняти не тільки зміст, але і тип. Добре це чи погано, буде видно, але у суворої типізації є свої позитивні риси. Проте якщо так склалося, то чому б зовсім не "растипировать" весь процес? В семантичному плані, тобто за межами синтаксису, будь-яка змінна має значення. А воно при будь-якому положенні речей змінюється. Послідовність змін - вже кількість, що в термінах jаvascript - element array. Інакше кажучи, якщо програміст вирішив не надавати значення типу змінної і поклав на мову турботу про належному і своєчасному перетворення типів, то чому б взагалі не спростити: є просто дані, ну а вже які вони будуть в точці застосування - число, рядок, масив або об'єкт - це вже кодом вирішувати. Ще більш правильно: це повинно само по собі визначати, що можна з ним робити і як саме.
Прості дані і синтаксис
Прості змінні представлені різними типами. Перетворення типів виконуються автоматично, коли в цьому виникає необхідність.
В даному прикладі описана проста змінна s, в якій буде формуватися результат роботи з jаvascript Array aCheck. Змінна i описана безпосередньо в циклі роботи з aCheck. Тут елементи масиву створюються за допомогою конструкції jаvascript Array push) представляють собою три значення різного типу. Перший цикл виводить рядок s назви типів, другий - власне значення. Перетворення типу виконується автоматично.
]
Про кількості елементів у масивах
В jаvascript Array не є асоціативним масивом. Доступ до елементів виконується за чисельним ключів, максимальну кількість елементів - 2 32 але експериментувати з граничними кількостями елементів не слід. Хороший алгоритм завжди має найближче кількість даних, а конструкція JavaSscript Array length введена в синтаксис зовсім не для контролю об'єму масиву в контексті його змісту. Значенням aCheck.length буде не завжди реальна кількість елементів. В jаvascript Array може містити стільки й того, що туди було відправлено, але щоб дізнатися, скільки саме, часом доводиться потрудитися.
У цьому прикладі, вираз aCheck[5]збільшує масив до шести елементів. Плекати надії, що функція length дасть значення 4 не виправдано.
Асоціативні масиви
Формально jаvascriptt Array можуть бути тільки звичайними, тобто доступ до елементів здійснюється за числовими індексами. Проте в реальності можна використовувати асоціативні ідеї.
Дуже проста і буденна задача сортування рядків таблиці по колонках може бути вирішена за допомогою асоціативного масиву. Точка в кружечку біля імені стовпця означає відсутність сортування, стрілка вгору - за спаданням, стрілка вниз - за зростанням. Клік на колонку змінює напрямок (варіант реалізації на jаvascript: Sort Array).
У цьому прикладі, у масиві cSortCols формуються напрями сортування по кожній колонці (S, C, W, ). Значення напрямів тільки u, d. В конструкції for in всі зшивається в один рядок (код колонки, і напрямок сортування). Цей цикл переглядає всі елементи масиву, і використовувати функцію jаvascript Array length немає необхідності.
Створення і сортування масиву на jаvascript
Гарна практика - писати 'var xMass =[];' або 'var yArr = {};'. У першому випадку буде визначено звичайний масив, у другому випадку - асоціативний. Використовувати варіант jаvascript New Array() можна, але зазвичай ця конструкція використовується для інших цілей, в основному для роботи з об'єктами. Створений масив можна відразу заповнити змінними, але, як правило, актуально заповнення і маніпулювання масивом в динаміці, в ході виконання програми. При необхідності сортування можна використовувати конструкцію jаvascript Sort Array, яка не відрізняється гнучкістю, але дозволяє керувати процесом за допомогою власної функції. Виклик: arr.sort() призводить до сортування у порядку слідування символів таблиці ASCII. Зворотна функція - перестановки елементів: arr.reverse(). Ця функція змінює порядок елементів масиву на зворотний. В обох випадках слово arr позначає масив. У першому випадку допускається використання власної функції сортування, тобто виклик arr.sort(myfunc(a,b)) приведе до виклику власної функції myfuct, яка повинна видати результат в залежності від даних: a і b. Якщо перше менше другого, то -1 якщо навпаки, то-1 а якщо a = b, то 0. Тут критерій порівняння визначається програмістом в функції myfunc.
Ідея активного елемента
Функція, що викликається в процесі сортування, може виконувати різні дії. З точки зору конструкції, в якій застосовується, вона не зобов'язана реагувати на вхідні параметри, а її результат - не тільки три числа -1 1 і 0. Будучи застосованою в масиві циклічно до кожного елементу, вона може перебудувати масив. Якщо уявити, що масив - це певний сенс, певна структура даних, то jаvascript Array перетворюється в змінну з змінюваним змістом. Якщо взяти за основу використання першого або останнього елемента масиву в якості його змісту, виконання функції sort може перетворити масив так, що першим/останнім стане інший елемент, як потрібно за умовами завдання. Така ідея може дозволити перебудувати алгоритм рішення таким чином, зокрема, що відпаде потреба у використанні конструкцій if () {} else {} switch () {case"; case"; }. Маніпулюючи вмістом масиву, можна переміщати елементи всередині нього, змінюючи тим самим зовнішню функціональність, яку можна отримувати через перший або останній елемент.
jаvascript Array: нелогічне використання
Всякий язик хороший тим, що дозволяє не тільки змінювати структуру і зміст даних, але і власне код. Ідея розглядати як змінну абстракцію, тобто спочатку не передбачаючи її типової статус, відкриває нові горизонти. Починаючись з абстракції, мінлива, масив або об'єкт дозволяють уявити процес обробки даних як функцію цих даних, причому в динаміці. Наприклад, читаючи текст, можна описати цей "текст", яке буде розбиватися на пропозиції - критерій "точка" (в контексті, тобто з урахуванням прийнятого синтаксису речень). Пропозиції будуть розбиватися на фрази (в контексті, кома і відповідний синтаксис). Далі слова і букви. Результат: можна працювати на рівні текстів, речень, слів. На кожному рівні можна створити функції "унікальності", що дозволить шукати подібне чи аналогічне. Можна створити функції застосування речень, фраз до інших даних.
Сучасне програмування давно не догма, але той факт, що створені за останні десятиліття синтаксичні конструкції і накопичений досвід відкривають непередбачені розробниками мов нові горизонти - ще належить відкрити і використовувати.