Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно обратиться к массиву, который вернула другая функция 
V
    Опции темы
Castro
Дата 18.9.2007, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 353
Регистрация: 31.8.2007
Где: Украина

Репутация: нет
Всего: 5



Было:
Код

this.getImageIndexByPattern = function(doc, pattern, att) {
        var images = doc.images;
        if (images) {
            var reg = new RegExp(pattern);
            var conv = new shortToLongAttrConverter();
            var counter = 0;
            // Calculater count of matched images
            for (var i = 0; i < images.length; i++) {
              var Str;
              if (att == 'src'){
                Str = conv.getNewUrl(doc, images[i].src);
              } else if (att == 'href') {
                Str = conv.getNewUrl(doc, images[i].href);
              } else {
                Str = images[i].getAttribute(att);
              }

              if (reg.exec(Str)) {
                   counter++;
              }
            }

            if (counter != 0) {
                // get random mathced images
                var randF = Math.floor(Math.random() * counter);
                if (randF == 0) randF++;
                counter = 0;
                for (var i = 0; i < images.length; i++) {
             var Str;
                if (att == 'src'){
                  Str = conv.getNewUrl(doc, images[i].src);
             } else if (att == 'href') {
                  Str = conv.getNewUrl(doc, images[i].href);
             } else {
                  Str = images[i].getAttribute(att);
             }

                 if (reg.exec(Str)) {
                   counter++;
                      if (counter == randF) {
                       return i;
                          }
                 }
             
                }
            }
        }
        return -1;
    }


Стало 
Код

this.getImageIndexByPattern = function(doc, pattern, att) {
            var images = doc.images;
            if (images) {
                var M= new Array();
                var reg = new RegExp(pattern);
                var conv = new shortToLongAttrConverter();
                var result=this.getElementCountByPattern(doc,images,reg, att, conv)
                if (result['counter'] != 0) {
                    // get random mathced link
                    var randF = Math.floor(Math.random() * result['counter']);
                    if (randF == 0) randF++;
                    M=result['Str'];
                    return M['randF'];
                    if(result['counter'] == randF){
                        return result['i'];
                    }
                  
                }
            }
            return -1;
        }
/* Check a count of required elements*/
/* Return count and index*/
this.getElementCountByPattern = function(doc, element, reg, att, conv)
        {
        var Str;
        var counter=0;
        var checkedElements=new Array();
            for (var i = 0; i < element.length; i++){
                if (att == 'href'){
                    Str = conv.getNewUrl(doc, element[i].href);
                }
                else if (att == 'src'){
                    Str = conv.getNewUrl(doc, element[i].src);
                }
                else Str = element[i].getAttribute(att);
                    if(reg.exec(Str)){
                        checkedElements[counter] = Str;
                        counter++;

                    }
            }
            
        }

Суть в том тчобы избавиться от 2х вызовов RegExp в первом случае, но и ещё я разнёс на 2 функции, потому что эта часть много раз будет использоватся.
Правильно ли я всё сделал? Правильно ли вернётся Str?
Конструкция 
Код

var M= new Array();
M=result['Str'];
return M['randF'];
 Сработает? То есть она должна вернуть случайный элемент с массива, полученого в другой функции.

Это сообщение отредактировал(а) Castro - 19.9.2007, 11:55


--------------------
user posted image
PM MAIL ICQ GTalk   Вверх
Castro
Дата 19.9.2007, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 353
Регистрация: 31.8.2007
Где: Украина

Репутация: нет
Всего: 5



Никто не обращался к массиву,который вернула другая функция? smile 


--------------------
user posted image
PM MAIL ICQ GTalk   Вверх
solenko
Дата 19.9.2007, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 9
Всего: 67



я как-то не понял в чем у вас проблема... Обращайтесь как хотите
Код

function foo(){
  return {"a": 1, "b":2}
}
var foo_var = foo();
alert(foo_var.a);
alert(foo_var.b);
alert(foo_var['a']);
alert(foo_var['b']);



--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Castro
Дата 19.9.2007, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 353
Регистрация: 31.8.2007
Где: Украина

Репутация: нет
Всего: 5



Цитата(solenko @ 19.9.2007,  11:18)
я как-то не понял в чем у вас проблема... Обращайтесь как хотите
Код

function foo(){
  return {"a": 1, "b":2}
}
var foo_var = foo();
alert(foo_var.a);
alert(foo_var.b);
alert(foo_var['a']);
alert(foo_var['b']);


solenko, это хороший пример, Вы уже мне его показывали.
Но мне нужно обратится к n-ному элементу массива, который вернула Ваша foo().
Если я напишу
Код

 foo_var.a['n'], 
где а=Array(), то это будет правильно?
И ещё чуть оффтоп-какая конструкция поможет узнать что переменная которую проверяю имеет тип array. С typeof чёто не получилось....


Это сообщение отредактировал(а) Castro - 19.9.2007, 11:40


--------------------
user posted image
PM MAIL ICQ GTalk   Вверх
Castro
Дата 19.9.2007, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 353
Регистрация: 31.8.2007
Где: Украина

Репутация: нет
Всего: 5



А таки  foo_var['a'][n] работает. Всем спасибо


--------------------
user posted image
PM MAIL ICQ GTalk   Вверх
solenko
Дата 19.9.2007, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 9
Всего: 67



Цитата

И ещё чуть оффтоп-какая конструкция поможет узнать что переменная которую проверяю имеет тип array.

Можно проверять свойство constructor


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0452 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.