sprawdzanie zawartości bez metody includes()

0

Potrzebuję napisać funkcję includes(array, value), która będzię robić to samo co metoda includes() (ale nie można jej użyć), sprawdza czy na tablicy array jest wartość value i zwróci wartość true lub false
dla przykładów:
includes([1, 2, 3, 4, 5], 17)
includes(["apple", "plum", "pear", "orange"], "plum")

mam tyle, ale potrzebuję żeby zwróciło mi true lub false

 function includes(array, value) {

for (i=0; i < array.length; i+=1) {
if (i === value) {
  return i; } 
  }
 }
2
function includes(array, value)
{
  for(var i = 0; < array.length; i++) 
  {
    if(array[i] == value)
      return true;
  }
  return false;
}
2
function includes(array, value) {
  return array.indexOf(value) > -1;
}

indexOf() zwraca index elementu w tablicy, lub -1 jeśli go nie ma.

3

@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:

  1. Pętla for iteruje po indeksach tablicy
  2. 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).
  3. 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).
  4. 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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1