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.
Przećwiczysz
- Użyć metody tablicowej zamiast mutacji
- Rozumieć, co kopiuje filter
Przykłady
- [{ 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
const sports = [{ name: 'cricket' }, { name: 'football' }, { name: 'cricket' }];
assert.deepEqual(filterCricket(sports), [{ name: 'cricket' }, { name: 'cricket' }]);nie zmienia tablicy wejściowej i zwraca nową
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
const sports = [{ name: 'cricket' }, { name: 'football' }];
assert.ok(filterCricket(sports)[0] === sports[0], 'filter nie robi kopii elementów');Powiązane pytania
Źródło: Full Stack / JS — karta z zadaniem — Polecenie i rozwiązanie wzorcowe pochodzą z karty; testy napisano na podstawie jej opisu.