@89hunter92: odpowiedzi już masz podane, ale bez objaśnienia, więc z nudów Ci je wyjaśnię.
Zacznę od Twojego kodu. Twoja funkcja includes tak na prawdę dosłownie nie ma sensu. Porównuje podaną wartość do indeksu i zwraca indeks. Zakładając, że value zawsze będzie int, a tablica jest nieskończona (co z tego co wiem jest niemożliwe), to po prostu zwróci Ci value.
Błąd wydaje się w sposobie rozumowania i może nie do końca w głowie miałeś ułożone jak to ma wyglądać.
Przykład @AdamWox działa następująco:
- Pętla for iteruje po indeksach tablicy
- Warunek if sprawdza czy wartość leżąca pod indeksem jest taka sama (nie do końca taka sama, bo operator == nie uwzględnia typów).
- Jeśli wartość pod znalezionym indeksem jest taka sama jak podana w value zwraca operator logiczny true i opuszcza pętlę. (w tego typu funkcjach najlepiej jest zwracać wartości typu Boolean, a nie np. 0/1, "true"/"false", jest to łatwiejsze przy późniejszym operowaniu na przykład w if-ie).
- Jeśli nie opuszczono pętli oznacza to, że nie znaleziono indeksu, którego wartość jest taka sama jak value, więc mamy
return false;
Natomiast przykład @Riddle wykorzystuje inną funkcję, tylko lekko "konwertuje" jej wynik:
Funkcja indexOf
"zwraca index elementu w tablicy, lub -1 jeśli go nie ma.", więc można ją sprytnie wykorzystać do zastąpienia include. Jedyne co potrzebujemy zrobić to, żeby zamiast wartości liczbowej zwracała Boolean. W tyn celu został użyty mały warunek logiczny (nie wiem czy można to tak nazwać, może mnie ktoś poprawi).
array.indexOf(value) > -1
można to przetłumaczyć na język polski "Zwróć, czy indeks istnieje". Na pytanie "Czy indeks istnieje?" możemy odpowiedzieć "Tak", lub "Nie", a przekładając na nieco bardziej profesjonalne stwierdzenia true/false. Tak więc zwracamy true jeśli istnieje, a false jeśli nie.
Dodam jeszcze, że nie można nazywać własnych funkcji tak samo jak "wbudowanych", bo tworzyłoby to błędy. Nazwy funkcji muszą być unikalne. VSC podświetla takie błędy.