Урок 7 по JScript: for…in – цикл для работы с массивами и объектами

В этой статье мы рассмотрим цикл for…in js сценариев языка jscript. Данный js цикл for…in не предназначен, как остальные циклы, для выполнения n-го количества операций, его основное назначение – получение доступа к элементам массива и объекта. Он практичен в том случае, если надо просмотреть свойства какого-то объекта или произвести групповые операции над всеми элементами массива.
Урок 7 по JScript: for…in – цикл для работы с массивами и объектами

Давайте для начала посмотрим на общий синтаксис цикла for…in:

for (имя переменной in [имя объекта|имя массива]) {тело цикла}

Тут логика работы довольно проста, сразу после ключевого слова for в круглых скобках указывается имя переменной, которая будет хранить ссылку на нужный объект или массив, имя массива или объекта идёт после ключевого слова in, в фигурных скобках мы указываем нужные выражения.

Давайте рассмотрим следующий пример:

//********************************// js цикл for...in// for_in.js//******************************** // простой массивvar new_arr=[1,2,3,4,5,10,12,12,14];WScript.Echo(new_arr); for(var element in new_arr){     new_arr[element]*=2;}WScript.Echo(new_arr); //Матрица 3х3//неверный подходvar new_arr1=[[1,2,3],[4,5,10],[12,12,14]];WScript.Echo(new_arr1); for(var element in new_arr1){     new_arr1[element]*=2;}WScript.Echo(new_arr1); //Матрица 3х3var new_arr2=[[1,2,3],[4,5,10],[12,12,14]];WScript.Echo(new_arr2); for(var element in new_arr2){     for(var element1 in new_arr2[element]){     new_arr2[element][element1]*=2;     }}WScript.Echo(new_arr2);

Тут мы вначале объявляем простой массив, далее с помощью цикла for in js скрипта мы перебираем все элементы и умножаем их на два. После, мы создаем матрицу размером 3 на 3 и снова пробуем увеличить значение элементов в два раз, но получаем тип NaNне число, это и не удивительно, ведь матрица является двумерным массивом. В третьем примере мы уже дважды используем цикл for in для увеличения значений, в этот раз всё получилось. Как видим, цикл for in не нуждается в указании количества элементов и позволяет в групповом порядке произвести нужные манипуляции.

Хорошо, теперь давайте рассмотрим пример с объектом:

//********************************// js цикл for...in// for_in_1.js//******************************** // объявляем объект Datevar index="";var dd=newDate();//создаем новый объект new_objvar new_obj={a:100, b:25, c:"строка", d:dd.getYear()};//пробуем вывести свойства, но безуспешноWScript.Echo(new_obj); for(var element in new_obj){     index+=element +"t"+ new_obj[element]+"n";}WScript.Echo(index);

В данном примере мы создали собственный объект с именем new_obj, ему мы прописали четыре свойства: a:100, b:25, c:"строка", d:dd.getYear(), тут getYear() – это метод объекта Date, который выводит текущий год. Если просто попытаться вывести напрямую через функцию Echo весь объект new_obj, то мы ничего не получим, тут-то и нужен js цикл for…in. Видим, что переменная element хранит в себе имя свойства, для доступа к самому значению мы используем конструкцию new_obj[element].

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

К сожалению, подобным образом нельзя достучаться ко свойствам внешнего объекта, например, Scripting.FileSystemObject:

//********************************// js цикл for...in// for_in_2.js//******************************** var index="";var dd=WScript.CreateObject("Scripting.FileSystemObject"); for(var element in dd){     index+=element +"t"+ dd[element]+"n";}WScript.Echo(index);

В данном примере, вместо ожидаемых имен и значений свойств мы ничего не получим. Любопытно и то, что на JavaScript в теле HTML страницы похожий код всё-таки выдает нужные данные, но, будет работать не в каждом обозревателе.

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