Javascript Array для сохранения неограниченного количества переменных

JavaScript - язык браузера, потому не каждая задача нуждается в собственных переменных, массивах и объектах. Во многих случаях вполне достаточно просто использовать DOM (объектную модель документа). Но даже в таких случаях правильное описание используемых данных всегда делает программу более совершенной, удобной в использовании и последующей доработке.

JavaScript array

Слова имеют значение, но, именуя в программе то, что подлежит использованию и изменению, уместно ограничиться словами "данные" и "переменные". Ну а уж какими они будут - JavaScript Array, Object или просто Integer - зависит от задачи, точнее от конкретного места в ней.

Логика кода и данных

Программисты привыкли манипулировать данными. Были и по сей день есть переменные в широком спектре представлений (строки, символы, числа, даты...), как правило, отдельно позиционировались массивы и (последние пару десятков лет) объекты.

JavaSscript element array

В определенный момент времени строгая типизация данных стала реликвией, и теперь в каждом современном языке данное может менять не только содержание, но и тип. Хорошо это или плохо, будет видно, но у строгой типизации есть свои положительные черты. Однако если так сложилось, то почему бы вовсе не "растипировать" весь процесс?

В семантическом плане, то есть за пределами синтаксиса, любая переменная имеет значение. А оно при любом положении вещей меняется. Последовательность изменений - уже количество, что в терминах JavaScript - element array.

Иначе говоря, если программист решил не придавать значения типу переменной и возложил на язык заботу о надлежащем и своевременном преобразовании типов, то почему бы вообще не упростить: есть просто данные, ну а уж какие они будут в точке применения - число, строка, массив или объект - это уж коду решать. Еще более правильно: данное должно само по себе определять, что можно с ним делать и как именно.

Простые данные и синтаксис

Простые переменные представлены различными типами. Преобразования типов выполняются автоматически, когда в этом возникает необходимость.

Простой пример простого синтаксиса

В данном примере описана простая переменная s, в которой будет формироваться результат работы с JavaScript Array aCheck. Переменная i описана непосредственно в цикле работы с aCheck. Здесь элементы массива (создаются при помощи конструкции JavaScript Array push) представляют собой три значения разного типа. Первый цикл выводит в строку s названия типов, второй - собственно значения. Преобразование типа выполняется автоматически.

JavaSscript array push

О количествах элементов в массивах

В JavaScript Array не является ассоциативным массивом. Доступ к элементам выполняется по численным ключам, максимальное количество элементов - 232, но экспериментировать с предельными количествами элементов не следует.

Хороший алгоритм всегда имеет обозримое количество даннных, а конструкция JavaSscript Array length введена в синтаксис вовсе не для контроля объема массива в контексте его содержания.

Значением aCheck.length будет не всегда реальное количество элементов. В JavaScript Array может содержать столько и того, что туда было отправлено, но чтобы узнать, сколько именно, порой приходится потрудиться.

Количество элементов - не всегда соответствует реальности

В этом примере, выражение aCheck[5] увеличивает массив до шести элементов. Питать надежды, что функция length даст значение 4, не оправдано.

Ассоциативные массивы

Формально JavaScript Array могут быть только обыкновенными, то есть доступ к элементам осуществляется по числовым индексам. Однако в реальности можно использовать ассоциативные идеи.

Очень простая, классическая сортировка

Очень простая и обыденная задача сортировки строк таблицы по колонкам может быть решена посредством ассоциативного массива. Точка в кружочке возле имени столбца означает отсутствие сортировки, стрелка вверх - по убыванию, стрелка вниз - по возрастанию. Клик на колонку меняет направление (вариант реалиации на JavaScript: Sort Array).

Реализация сортировки

В этом примере в массиве cSortCols формируются направления сортировки по каждой колонке (S, C, W, ...). Значения направлений только u, d. В конструкции for in все сшивается в одну строку (и код колонки, и направление сортировки). Этот цикл просматривает все элементы массива, и использовать функцию JavaScript Array length нет необходимости.

JavaScript sort array

Создание и сортировка массива на 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.

JavaScript new array

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

Функция, вызываемая в процессе сортировки, может выполнять различные действия. С точки зрения конструкции, в которой применяется, она не обязана реагировать на входные параметры, а ее результат - не только три числа -1, 1 и 0. Будучи примененной в массиве циклически к каждому элементу, она может перестроить массив.

Если представить, что массив - это определенный смысл, определенная структура данных, то JavaScript Array превращается в переменную с изменяемым содержанием.

Если принять за основу использование первого или последнего элемента массива в качестве его содержания, то исполнение функции sort может преобразовать массив так, что первым/последним станет иной элемент, как требуется по условиям задачи.

Такая идея может позволить перестроить алгоритм решения таким образом, в частности, что отпадет необходимость в использовании конструкций if () {} else {} и switch () { case '': ...; case '': ...; ... }.

Манипулируя содержанием массива, можно перемещать элементы внутри него, меняя тем самым внешнюю функциональность, которую можно получать через первый или последний элемент.

JavaScript array length

JavaScript Array: нелогичное использование

Всякий язык хорош тем, что позволяет не только менять структуру и содержание данных, но и собственно код. Идея рассматривать переменную как абстракцию, то есть изначально не предусматривая ее типовой статус, открывает новые горизонты.

Начинаясь с абстракции, переменная, массив или объект позволяют представить процесс обработки данных как функцию этих данных, причем в динамике.

Например, читая текст, можно описать данное "текст", которое будет разбиваться на предложения - критерий "точка" (в контексте, то есть с учетом принятого синтаксиса предложений). Предложения будут разбиваться на фразы (в контексте, запятая и соответствующий синтаксис). Дальше слова и буквы.

Результат: можно работать на уровне текстов, предложений, слов. На каждом уровне можно создать функции "уникальности", что позволит искать подобное или аналогичное. Можно создать функции применения предложений, фраз к другим данным.

Современное программирование не догма

Современное программирование давно не догма, но тот факт, что созданные за последние десятилетия синтаксические конструкции и накопленный опыт открывают непредусмотренные разработчиками языков новые горизонты - еще предстоит открыть и использовать.

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.