filter
Filtra elementos emitidos por el Observable fuente, emitiendo únicamente aquellos que cumplan una condición
Descripción
Al igual que Array.prototype.filter(), solo emite un valor si cumple una condición determinada.

Es similar al método Array.prototype.filter(). Este operador emite únicamente aquellos valores del Observable fuente que cumplan la condición especificada en la función predicate, es decir, aquellos valores que, al proporcionárselos a la función, hagan que esta devuelva true.
Ejemplos
Emitir los números mayores que 5
import { filter } from "rxjs/operators";
import { range } from "rxjs";
const number$ = range(1, 10);
number$.pipe(filter((n) => n > 5)).subscribe(console.log);
// Salida: 6, 7, 8, 9, 10Emitir todas las teclas, excepto la barra espaciadora
import { filter, map } from "rxjs/operators";
import { fromEvent } from "rxjs";
const key$ = fromEvent<KeyboardEvent>(document, "keydown");
key$
.pipe(
map(({ code }) => code),
filter((code) => code !== "Space")
)
.subscribe(console.log);
// Salida: KeyX, KeyO...Filtrar los lenguages de tipo Multiparadigma
import { filter } from "rxjs/operators";
import { from } from "rxjs";
const language$ = from([
{ name: "Java", type: "Orientado a objetos" },
{ name: "Ruby", type: "Multiparadigma" },
{ name: "Haskell", type: "Funcional" },
{ name: "Rust", type: "Multiparadigma" },
]);
language$
.pipe(filter(({ type }) => type !== "Multiparadigma"))
.subscribe(console.log);
/* Salida:
{ name: "Java", type: "Orientado a objetos" },
{ name: "Haskell", type: "Funcional" }
*/Ejemplos de la documentación oficial
Emite solo los eventos click cuyo target sea un elemento DIV
import { fromEvent } from "rxjs";
import { filter } from "rxjs/operators";
const clicks = fromEvent(document, "click");
const clicksOnDivs = clicks.pipe(filter((ev) => ev.target.tagName === "DIV"));
clicksOnDivs.subscribe((x) => console.log(x));Recursos adicionales
Last updated