Mam tablicę, która składa się z ciągów. Zrobiłem funkcję, która przeszukuje tablicę na podstawie parametru wyszukiwania. Jednak gdy uruchomię kod, który kiedykolwiek wytwarza ciąg w indeksie 0 tablicy. Chcę, aby zwrócić odpowiedni adres URL w tablicy, gdy uruchomi się wyszukiwanie.

Każda pomoc byłaby bardzo doceniana. Z góry dziękuję.

1
user1038065 10 listopad 2011, 18:19

4 odpowiedzi

Najlepsza odpowiedź

Jest to poprawna wersja twojego programu:

var arrayOfURL = [
                 "http://www.google.co.uk~Google is a search engine.",
                 "http://www.yahoo.co.uk~Yahoo is another search engine.",
                 "http://bing.com~Bing is a decision engine."
                 ];

function findURL(arrayOfURL,search)
{   
    var searchtoLower = search.toLowerCase();
    for (var i = 0; i < arrayOfURL.length; i++)
    {     
        var z = arrayOfURL[i].toLowerCase().split('~')[1]; 
        if (z.indexOf(searchtoLower) != -1)
            return arrayOfURL[i];
    }

     return "Nothing Found!";
}


findURL(arrayOfURL,"decision")

Mam nadzieję, że może ci pomóc.

0
xdevel2000 10 listopad 2011, 14:37

Próbujesz więc wrócić adres URL na podstawie ciągu po ~?

Zrobić linię

arrayOfURL[i].toLowerCase().split('~')[i];

Wydają się dziwnie? Wyobraź sobie, jak wzrastam, np. i = 4.

 arrayOfURL[4].toLowerCase().split('~')[4];

Czy to ma sens [4]? Zgaduję, że nigdy nie minęło pierwszego elementu, ponieważ kod faktycznie pojawia się na tej części.

Myślę, co chcesz, jest (podobnie do linii powrotnej, chcesz [0]

 arrayOfURL[i].toLowerCase().split('~')[1];

Przyjrzyjbym się

if (z >= searchtoLower) 

Co próbujesz tam porównać?

1
TS- 10 listopad 2011, 14:25

Problem może być w drugim paramie:

var z = arrayOfURL[i].toLowerCase().split('~')[i];  

Ciąg zostanie podzielony na 2 części (Indeks 0, 1). Dlaczego wybrałeś część i ?

1
Thanh Nguyen 10 listopad 2011, 14:27

Myślę, że powinieneś robić

var terms = arrayOfURL[i].toLowerCase().split('~');

if(0 <= terms[1].indexOf(searchToLower))
           // ^    ^ 
           // |    |-- 0 <= indexOf method determines
           // |        if searchToLower is a substring of terms[1] 
           // |               
           // |-- term[1] gets the part after the first "~"

I

return terms[0]; //terms[0] is the part before the first "~"

Rozważałbym także zwrot null lub pusty łańcuch "" w przypadku awarii (zamiast zwrócić komunikat Arbritrary "Nothing Found!")

0
hugomg 10 listopad 2011, 14:39