Skip to content

fuzzyFilter / fuzzyScore

Problem

You need fuzzy search over known object fields without recursively scanning arbitrary data.

Solution

ts
import { fuzzyFilter, fuzzyScore } from '@vielzeug/arsenal/array';

const users = [
  { email: 'alice@example.com', name: 'Alice Smith' },
  { email: 'alan@example.com', name: 'Alan Jones' },
];

const filtered = fuzzyFilter(users, 'alice', { select: (user) => [user.name, user.email] });
const ranked = fuzzyScore(users, 'ali', { select: (user) => user.name });

Pitfalls

  • Object collections require select.
  • Selector result defines all searchable data.
  • String arrays need no selector.