RxJS: Operator filter

Opublikowano: 02.08.2022 - tagi: JavaScript RxJS Operator Pipe

Operator filter służy do przefiltrowania danych z Observable.

Sami określamy warunki filtracji.

Przykłady

Przykład 1

import { from } from 'rxjs';
import { filter } from 'rxjs/operators';

const observable = from([1, 2, 3, 4,  5, 6]).pipe(
    filter(value => value > 3)
);

observable.subscribe(console.log);
// Wyświetli:
// 4
// 5
// 6

Przykład 2

import { from } from 'rxjs';
import { filter } from 'rxjs/operators';

const data = [
    {
        type: 'product',
        title: 'Product 1' 
    },
    {
        type: 'service'
        title: 'Service 1'
    },
    {
        type: 'product',
        title: 'Product 2' 
    }
];

const observable = from(data).pipe(
    filter(item => item.type  === 'product')
);

observable.subscribe(console.log);

// Wyświetli:
[
	{
        type: 'product',
        title: 'Product 1' 
    },
    {
        type: 'product',
        title: 'Product 2' 
    }
]

Przykład 3

Załóżmy, że chcemy odbierać zdarzenie na wciśnięcie tylko klawisza: Enter lub spacji, a inne należy ignorować.

import { fromEvent } from 'rxjs';
import { filter, map } from 'rxjs/operators';

const observable = fromEvent(document, 'keydown').pipe(
    map(event => event.code),
    filter(code => code === 'Enter' || code === 'Space')
);

observable.subscribe(console.log);

Wyświetli Enter po wciśnięciu klawisza Enter. Lub Space po wciśnięci spacji. Dla innych klawiszy nic się nie wyświetli.