Я пишу гибкий алгоритм поиска для части моего файла XML. У меня точно такой же метод работает безупречно в другом месте, поэтому это сводит меня с ума.
Вот раздел моей функции, с которым у меня проблемы.
var searchResults:Array = [];
var r:Array = [];
//Other code...
var classSplit:Array = inClass.split("-");
var profs:Array = getCourseProfs(classSplit[0], classSplit[1]);
trace(searchResults + "-vs-" + profs);
for each(var si:String in searchResults)
{
trace(si + " is at index " + profs.indexOf(si));
trace(profs);
if(r.indexOf(si) == -1 && profs.indexOf(si) != -1)
{
r.push(si);
trace(r);
}
}
А вот вывод для операторов трассировки конкретного запуска (из приведенного выше кода).
GABIOMA1,GABIOMA1-vs-GABIOMA1,MITCHKA1,GIBSOCA1
GABIOMA1 is at index -1
GABIOMA1,MITCHKA1,GIBSOCA1
GABIOMA1 is at index -1
GABIOMA1,MITCHKA1,GIBSOCA1
Final:
Как видите, функция имеет два результата в массиве searchResults (строки). Они оба идентичны, так как я еще не разобрался с повторяющимися результатами поиска. "ГАБИОМА1,ГАБИОМА1"
Затем я сравниваю это с массивом «profs» с этими тремя значениями: «ГАБИОМА1, МИТЧКА1, ГИБСОКА1».
Вы можете увидеть результат сопоставления в индексе 0 profs. Однако, как видно из следующей строки, profs.indexOf(si)' when
si` is "GABIOMA1" неправильно возвращает "-1".
Я могу написать обходной путь в мгновение ока, но мне нужно знать, почему indexOf решил не работать.
РЕДАКТИРОВАТЬ: еще более бесит, что код в другой ветке оператора IF из этого работает как шарм...
for each(var s:String in searchResults)
{
if(r.indexOf(s) == -1)
{
r.push(s);
}
}
РЕДАКТИРОВАТЬ 2: Это мой РАБОЧИЙ обходной путь. Как видите, все массивы работают правильно.
for each(var si:String in searchResults)
{
var match:Boolean = false;
for each(var pi:String in profs)
{
if(si == pi)
{
pr.push(si);
break;
}
}
}
match == true;
должно бытьmatch=true;
(edit2: строка 8) - person null.point3r   schedule 14.05.2014