Sprawdzi mi ktoś zadanko :)

Sprawdzi mi ktoś zadanko :)
Kuba Czarnecki
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 48
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:

Kopiuj
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 ?

Silv
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
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.

M3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 195
3

Ja bym to zrobił tak:

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

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

evenNumbers(numbers);
WC
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 137
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.