Sprawdzi mi ktoś zadanko :)

Odpowiedz Nowy wątek
2019-06-13 22:28
0

Zadanie 1
Masz daną tablicę: const numbers = [2, 5, 7, 10, 34, 16, 879, 1]. Napisz funkcję, która wypisze w konsoli nową tablicę zawierającą tylko parzyste liczby z tablicy numbers.

Mój kod:

const numbers = [2, 5, 7, 10, 34, 16, 879, 1]
const newNumbers = [];
function evenNumbers()
{
    for(let i = 0; i < numbers.length; i++)
    {
        if( numbers[i] % 2 === 0)
        {
            newNumbers.push(numbers[i]);
        }
    }
}

Jak byście to inaczej zrobili ?

Pozostało 580 znaków

2019-06-13 22:41
1

Wynik wykonania tego kodu w konsoli to undefined. Wynik wyświetlenia tablicy newNumbers to pusta tablica. Znaczy, zadanie niekompletne. :)

A jak inaczej mogłaby wyglądać sama funkcja? Powinna wyświetlać, to raz. Dwa, że można wykorzystać metodę Array.prototype.filter.


UPDATE: Jeszcze słówko na temat nazewnictwa. Funkcji nie nazywałbym evenNumbers, bo to brzmi, jakby była tablicą. Myślę, że lepiej byłoby napisać np. findEvenNumbers. W takim kodzie jak Twój nie ma to praktycznie żadnego znaczenia, ale w większych kodach jest podstawą dobrej architektury. Ale – zauważ, że funkcja odwołuje się do zewnętrznej zmiennej (nie lokalnej dla niej), a to rodzi pewien problem, bo findEvenNumbers sugeruje, że funkcja zwraca te liczby. I tutaj – osobiście wolałbym, żeby funkcja jednak zwracała nową tablicę, niż operowała na zmiennej zewnętrznej.


edytowany 1x, ostatnio: Silv, 2019-06-13 23:02
Chyba poruszasz już obiekty jak sie nie myle ;/ ja jeszcze do nich nie doszedłem. A funkcja wykonuje się w momencie wciśnięcia buttona - sorki faktycznie powinienem to dodać :) - Kuba Czarnecki 2019-06-13 22:47
Jeśli na temat, pisz lepiej w postach. - Silv 2019-06-13 22:48
Nie wiem, czy powinieneś traktować to jako "obiekt". Każda funkcja (metoda) jest obiektem, ale jeśli wolisz rozwiązanie, które nie wykorzystuje wbudowanych funkcji, to Twoje jest w porządku. - Silv 2019-06-13 22:50
PS. Oczywiście Twoje też je wykorzystuje (push), tylko w mniejszym stopniu. - Silv 2019-06-13 22:54

Pozostało 580 znaków

2019-06-13 23:40
m31
3

Ja bym to zrobił tak:

const numbers = [2, 5, 7, 10, 34, 16, 879, 1]

function evenNumbers(arr) {
    console.log(arr.filter(number => number % 2 === 0));
}

evenNumbers(numbers);
Czemu nie displayEvenNumbers? - Silv 2019-06-13 23:43
W sumie racja, po prostu wziąłem nazewnictwo od autora tematu :) - m31 2019-06-13 23:44
Zaczynam czaić wasze rozwiązania ale jeszcze w swoim kursie nie doszedłem do funkcji może dlatego autor nie pokazał mi tych metod na tablicach jak np .filter() Dzięki chłopaki mniej więcej wiem o co chodzi - Kuba Czarnecki 2019-06-14 11:06
@Kuba Czarnecki JavaScript ma to do siebie (zdaje się, że podobnie jak Python), że jak czytasz jego zapis, to nie jest to dalekie od potocznego zapisu angielskiego. Na przykład: console W konsoli log loguj (wyświetl) arr.filter() wynik wykonania filtrowania na tablicy "arr" number => number % 2 === 0 gdzie każdy element musi zwracać resztę zero przy dzieleniu przez dwa (a wynik nie może podlegać konwersji – operator "==="). - Silv 2019-06-14 13:39

Pozostało 580 znaków

2019-06-17 07:03
0

Dlaczego nie korzystacie z gotowych rozwiązań - np. is-odd.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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