Урок 17 по JScript: Enumerator — объект для работы с коллекциями

Урок 17 по JScript: Enumerator — объект для работы с коллекциями Программирование на JSCRIPT

Объект Enumerator jscript языка служит для работы с коллекциями. Коллекция – это в большинстве случаев объект, с неизвестным количество элементов, так как количество элементов неизвестно, то использовать цикл для их обработки трудно. Тут и нужен в языке jscript Enumerator объект, у него нет свойств, а есть только методы, и то, их всего четыре, они позволяют получать доступ к начальному, следующему и текущему элементу коллекции.

Стоит учесть, что в языке vbscript для обработки коллекции применяется цикл For…Each, работу с ним я детально описал в статье Урок 6 по VBScript: Циклы for…next и for each…next. И так, давайте приступим к изучению методов объекта Enumerator в jscript сценариях.

Методы

Прежде чем использовать методы, сначала нужно создать ссылку на объект Enumerator:

var е;
е = new Enumerator(collection);

В данном случае параметр collection указывает на коллекцию, к которой нужно получить доступ.

  • atEnd() – данный метод определяет, достигнут ли конец коллекции. Пока конец не достигнут, метод возвращает true, в противном случае – false.
  • item() – метод предоставляет доступ к текущему элементу.
  • moveFirst() – данный метод служит для перемещения указателя на первый элемент.
  • moveNext() — данный метод служит для перемещения указателя на следующий элемент.

Хорошо, что бы было всё понятней, давайте рассмотрим следующий пример:

//************************************
// работа с коллекцией
// enumerator_1.js
//************************************
 
//Объявляем переменные
var FSO, Folder, Files, list=""; 
 
//Создаем объект FileSystemObject
FSO=WScript.CreateObject("Scripting.FileSystemObject");
 
//Создаем объект Folder для корневого каталога диска С:
Folder=FSO.GetFolder("C:\\");
 
//Создаем коллекцию файлов для диска С
Files=new Enumerator(Folder.Files);
 
//Цикл по всем файлам
for (; !Files.atEnd(); Files.moveNext()) 
     list+=Files.item().Name+"\n";   
 
WScript.Echo(list);

Скачать архив с примерами

Давайте разберём всё по пунктам. Цель данного сценария – получить имена всех файлов, которые хранятся на диске С. Список этих данных и будет являться коллекцией, так как их количество нам не известно. Видим, что сначала мы объявили переменные: FSO – будет хранить ссылку на объект FileSystemObject, Folder – хранит ссылку на объект Folder (для доступа к нему используется метод GetFolder), который в свою очередь, предоставляет доступ к диску C, Files – эта переменная и является коллекцией всех файлов (хранит ссылку на объект Enumerator jscript языка) на диске C, сама коллекция Files хранит объект File для каждого файла, который через свойство Name позволяет получить имя файла , list – будет хранить список всех имен файлов на диске C. Далее, как мы видим идёт цикл for (я его детально описал в статье Урок 9 по JScript: Цикл for), который и будет отвечать за перебор.

При работе с циклом нужно указать три основных значения – начало, конец и шаг. Так как мы не знаем начального файла, то этот параметр мы просто пропускаем. В качестве конечного значения мы указываем метод atEnd() языка jscript объекта Enumerator, а точнее: !Files.atEnd() – восклицательный знак тут, это логическое НЕ (логические операторы я подробно описал в статье Урок 8 по JScript: Описание условного оператора if…else, арифметических и логических операторов), которое практически говорит – пока не наступит конец списка. В качестве шага мы используем метод moveNext(). Ну и в теле самого цикла мы просто добавляем в список имена файлов.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий

  1. Валерий

    Спасибо вам огромное))) Для таких людей как я (далёких от программирования) очень полезные уроки =)

    Ответить