• 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

VPS Starter Arubacloud
0 głosów
192 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ź 89 wizyt
pytanie zadane 18 listopada 2015 w JavaScript przez makoso Mądrala (7,380 p.)
0 głosów
1 odpowiedź 283 wizyt
pytanie zadane 28 grudnia 2015 w JavaScript przez Radekoslaw123 Gaduła (3,080 p.)
+1 głos
1 odpowiedź 157 wizyt
pytanie zadane 24 maja 2016 w JavaScript przez Boshi VIP (100,240 p.)

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...