• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

each tablicy js i zwracanie true

Object Storage Arubacloud
0 głosów
196 wizyt
pytanie zadane 17 października 2015 w JavaScript przez makoso Mądrala (7,380 p.)

Potrzebuję funkcję która zrobi "foreach" tablicy i zwróci true w przypadku gdy wartość z tablicy będzie się równała wartości podanej jako parametr funkcji niestety to co zrobiłem nie wiem czemu nie działa :(
 

//Dodam że tablica taskArray powstaje tak:
//1.odbieram dane z bazy są one w postaci "1,2,3,4..."
//2. powyższy zbiór zostaje zapisany funkcją .split(",")
// do taskArray
function checkTasks(tasksArray,taskId){
                                $.each(tasksArray, function (index, taskCompleteId) {
                                    if(taskId==taskCompleteId){
                                        return true;
                                    }
                                });
                                return false;
                            }

 

1 odpowiedź

+1 głos
odpowiedź 17 października 2015 przez furas Maniak (53,800 p.)
Przede wszystkim to `return true` powoduje wyskoczenie z anonimowej funkcji i zwrócenie wartości do `each` a nie wyskoczenie z `checkTask`. Tak więc za każdym razem wykonuje się `each` aż do końca a potem za każdym razem wykonuje się `return false`.

Zrobił bym to ze zwykłym `for()` bez użycia wewnętrznej funkcji.
komentarz 17 października 2015 przez makoso Mądrala (7,380 p.)

Dzięki, myślałem że wyjdzie to z całej funkcji.

Postanowiłem zrobić to tak:

function checkTasks(tasksArray,taskId) {
                                var check;
                                check = false;
                                $.each(tasksArray, function (index, taskCompleteId) {
                                        if (taskId == taskCompleteId) {
                                            check = true;
                                        }
                                    });
                                if(check){
                                    return true
                                } else{
                                    return false;
                                }
                            }

 

komentarz 17 października 2015 przez furas Maniak (53,800 p.)

Myślałem raczej o czymś bez użycia jQuery ;)

 

function checkTasks(tasksArray,taskId) {

    for(var i = 0; i < tasksArray.length; i++) {
        if(taskArray[i] == taskId) {
            return true;
        }
    }

    return false;
}

Podobno w nowszych przegladarkach można zrobić

function checkTasks(tasksArray,taskId) {
    return ( tasksArray.indexOf(taskId) > -1 );
}

jQuery udostępnia dużo rzeczy np.

function checkTasks(tasksArray,taskId) {
    return ( $.inArray(tasksArray, taskId) > -1 );
}

 

komentarz 17 października 2015 przez makoso Mądrala (7,380 p.)
Podoba mi się zapis z jQuery nie wiedziałem o tej funkcji (większości jeszcze nie wiem)

ale nie rozumiem dlaczego to jest porównywane do -1 jak to się przekłada tłumaczy na true/false? :)
komentarz 17 października 2015 przez furas Maniak (53,800 p.)
Te funkcje zwracają `index` czyli w którym miejscu w tabeli znajduje się szukany obiekt czyli wartości od 0 do dlugość_tablicy-1 . Jeśli obiektu nie ma w tabeli to zwracają -1 . Dawniej takie funkcje w dokumentacji deklarowały, ze mogą zwrócić wartość ujemną co nie gwaratowało, że musi to być -1 więc zwyczajowo sprawdzało się czy > -1 niż czy != -1.

Takie porównanie da `false` gdy funkcja zwróciła -1 (lub coś mniejszego) lub `true` gdy funkcja zwróciła index elementu w tablicy.

---

Warto przejrzeć choćby same nazwy funkcji udostępnianych przez jQuery bo to zawsze coś zostanie w głowie i może przypomni o sobie gdy będzie potrzebne.
komentarz 18 października 2015 przez makoso Mądrala (7,380 p.)
często przeglądam api jQuery ale nie wszystko z dokładnością ;)

Podobne pytania

0 głosów
1 odpowiedź 93 wizyt
pytanie zadane 18 listopada 2015 w JavaScript przez makoso Mądrala (7,380 p.)
0 głosów
1 odpowiedź 298 wizyt
pytanie zadane 28 grudnia 2015 w JavaScript przez Radekoslaw123 Gaduła (3,080 p.)
+1 głos
1 odpowiedź 164 wizyt
pytanie zadane 24 maja 2016 w JavaScript przez Boshi VIP (100,240 p.)

92,620 zapytań

141,471 odpowiedzi

319,794 komentarzy

62,002 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...