Personalización

Personalizar el comportamiento de la librería.

Opciones de personalización

Para personalizar la búsqueda, la función acepta un objeto con las siguientes opciones:

index.ts
const fuzzySearch = fuzzy(list, {
  key: "name", // Esta es la clave por la que se buscará en el ítem.
  getKey: (item) => [item.name, item.author.fullname],  // búsqueda por múltiples propiedades
  debug: true, // Añade cualquier opción adicional aquí
  limit: 10, // El número máximo de resultados a devolver
  maxScore: 2.5, // La puntuación máxima para los resultados
  mapResult: (item) => item, // Una función para mapear el ítem de resultado a un nuevo objeto
});

key y getKey

En caso de que los datos enviados sean objetos, puedes usar las opciones key y getKey para especificar qué propiedad buscar.

index.ts
const  = [
  { : "volvo", : 2020 },
  { : "seat", : 2019 },
  { : "mercedes", : 2021 },
  { : "audi", : 2022 },
  { : "bmw", : 2023 },
];
 
const  = (, {
  : "name" 
});
 
// Ejecuta esto siempre que cambie el término de búsqueda
const  = ("volv");
.(); 

De la misma manera, puedes usar la opción getKey para buscar por múltiples propiedades o propiedades anidadas.

index.ts
const  = [
  { : "volvo", : 2020, : { : "John Doe" } },
  { : "seat", : 2019, : { : "Jane Doe" } },
  { : "mercedes", : 2021, : { : "John Smith" } },
]
 
const  = (, {
  : () => [.., .], // búsqueda por múltiples propiedades
})
 

La opción limit

La opción limit permite limitar el número de resultados devueltos por la búsqueda.

Esto puede ser útil si tienes una lista grande y solo quieres mostrar los primeros resultados, o si tienes una interfaz fija como una cuadrícula.

index.ts
const  = ["volvo", "seat", "mercedes", "audi", "bmw"];
 
const  = (, {
   : 5, // Limita el número de resultados devueltos
})

La longitud de la respuesta será como máximo de 5 elementos.

La opción maxScore

La opción maxScore permite establecer la puntuación máxima para los resultados.

Recuerda que la puntuación es un número que comienza desde 0 (coincidencia exacta) y aumenta a medida que la coincidencia empeora. Piénsalo como una distancia desde la mejor coincidencia.

index.ts
const  = ["volvo", "seat", "mercedes", "audi", "bmw"];
 
const  = (, {
   : 2, // Los elementos con una puntuación mayor que 2 serán ignorados (solo se devolverán elementos similares)
})

Filtrado por puntuación

Cuando se usan tanto limit como maxScore, el algoritmo primero filtrará los resultados por puntuación y luego limitará el número de resultados devueltos.

La opción debug

La opción debug permite registrar detalles sobre la búsqueda en la consola del navegador como una tabla para cada ítem o el tiempo que tardó en ejecutarse la búsqueda.

index.ts
const  = ["volvo", "seat", "mercedes"];
 
const  = (, {
   : true, // Activa el modo de depuración, lo que registrará detalles sobre la búsqueda en la consola
})

La opción mapResult

Es una función llamada internamente antes de la respuesta que mapea el ítem de resultado a un nuevo ítem. Se utiliza principalmente para transformar el ítem de resultado a un tipo diferente.

index.ts
const  = ["volvo", "seat", "mercedes", "audi", "bmw"];
 
const  = (, {
   : () => .(), // Mapea el ítem de resultado a un nuevo ítem
});
  const  = ("volvo");
  .(.[0].); // VOLVO

Genericos de TypeScript

La librería utiliza dos genéricos: uno para el tipo de entrada (ítems de la lista) y otro para el tipo de salida (ítems de resultado). Si se utiliza mapResult, el tipo de salida se adapta en consecuencia.

index.ts
function <,  = >(: [], ?: <, >): <>;
Edit on GitHub

Last updated on

On this page