Przejdź do treści
Jobless Busters
Z testamiPodstawowa

Filtrowanie sportów

Napisz filterCricket(sports), które zwraca nową tablicę z elementami, których name to 'cricket', bez zmiany tablicy wejściowej.

Wynik zawiera referencje do tych samych obiektów — filter nie wykonuje głębokiej kopii. Nazwę pola i reguły porównania ustalam z treści zadania.

  • Użyć metody tablicowej zamiast mutacji
  • Rozumieć, co kopiuje filter
  • [{ name: 'cricket' }, { name: 'football' }, { name: 'cricket' }]→ [{ name: 'cricket' }, { name: 'cricket' }]
Testy (3)

Testy napisane na podstawie karty: nowa tablica, bez mutacji wejścia, te same referencje obiektów.

zwraca tylko cricket

JavaScript
const sports = [{ name: 'cricket' }, { name: 'football' }, { name: 'cricket' }];
assert.deepEqual(filterCricket(sports), [{ name: 'cricket' }, { name: 'cricket' }]);

nie zmienia tablicy wejściowej i zwraca nową

JavaScript
const sports = [{ name: 'cricket' }, { name: 'football' }];
const result = filterCricket(sports);
assert.ok(Array.isArray(result) && result !== sports, 'wynik powinien być nową tablicą');
assert.deepEqual(sports, [{ name: 'cricket' }, { name: 'football' }]);

zawiera referencje do tych samych obiektów

JavaScript
const sports = [{ name: 'cricket' }, { name: 'football' }];
assert.ok(filterCricket(sports)[0] === sports[0], 'filter nie robi kopii elementów');

Źródło: Full Stack / JS — karta z zadaniem — Polecenie i rozwiązanie wzorcowe pochodzą z karty; testy napisano na podstawie jej opisu.

JavaScript · uruchamiany w Web Workerze w przeglądarce

Tab wcina · Esc, a potem Tab, opuszcza edytor · ⌘/Ctrl + Enter uruchamia testy · Twój kod jest zapisywany w tej przeglądarce.

Uruchom testy, żeby sprawdzić rozwiązanie. Gotowych testów: 3.

Utknąłeś? Podpowiedzi idą od ogólnych do konkretnych.

Najpierw spróbuj naprawdę — rozwiązanie najwięcej daje, gdy już trochę się namęczysz.