Toujours pas convaincu ? Découvrez sa puissance avec cette démo interactive.
Comment se compare-t-il aux autres bibliothèques de recherche ? Testez-le par vous-même avec ce benchmark interactif ;)
ss-search est disponible sur npm. Installez-le avec :
npm install ss-search
import { search } from 'ss-search'
const data = [
{
number : 1 ,
text : 'A search function should be fast' ,
} ,
{
number : 2 ,
text : 'A search function should provide accurate results' ,
} ,
]
const searchKeys = [ 'text' ]
const searchText = 'fast search'
const results = search ( data , searchKeys , searchText )
// results: [{ number: 1, text: "A search function should be fast" }]
C'est aussi simple que cela. Aucune configuration, ça marche.
Presque tous les types de données sont pris en charge [booléen, nombre, chaîne, objet, tableau].
// This dataset will be used as a common starting point for our type examples
const data = [
{
boolean : true ,
number : 1 ,
string : 'search' ,
object : { nestedProperty : 'nested value' } ,
array : [ 'value1' , 'value2' ] ,
arrayObjects : [ { arrayObjectProperty : 'array object value' } ] ,
} ,
]
const results = search ( data , [ 'boolean' ] , 'true' )
// results: will return our original dataset
const results = search ( data , [ 'number' ] , '1' )
// results: will return our original dataset
const results = search ( data , [ 'string' ] , 'search' )
// results: will return our original dataset
Fournir une clé qui fait référence à un objet stringifiera cet objet à l'aide de JSON.stringify
const results = search ( data , [ 'object' ] , 'property' )
// results: will return our original dataset as it matches the property key "nestedProperty" of our object
Si vous souhaitez accéder à une propriété imbriquée d'un objet pour n'en extraire qu'une seule valeur
const results = search ( data , [ 'object.nestedProperty' ] , 'property' )
// results: will return an empty array as we extracted the value of our nested object
// if we had searched for "nested value" we would of had the original dataset
Fournir une clé qui fait référence à un tableau stringifiera ce tableau à l'aide de JSON.stringify
const results = search ( data , [ 'array' ] , 'value2' )
// results: will return our original dataset
Si vous disposez d'un tableau d'objets sur lequel vous souhaitez rechercher toutes les propriétés
const results = search ( data , [ 'arrayObjects' ] , 'arrayObjectProperty' )
// results: will return an our original dataset as it's treated just like a regular array
// thus the arrayObjectProperty is part of the searchable text
Si vous disposez d'un tableau d'objets pour lequel vous souhaitez que seules des propriétés spécifiques puissent être recherchées
const results = search ( data , [ 'arrayObjects[arrayObjectProperty]' ] , 'arrayObjectProperty' )
// results: will return an empty array as we extracted the value of our nested array of objects
// if we had searched for "value object" we would of had the original dataset
search
Personnalisez votre expérience de recherche à l'aide des options suivantes :
Paramètre d'option | Valeur | Description |
---|---|---|
withScore | true | Lorsqu'elle est définie sur true , la fonction de recherche renverra un tableau d'objets, chacun contenant l'élément correspondant et son score correspondant. Le score représente la mesure dans laquelle l'élément correspond au texte recherché, un score plus élevé indiquant une correspondance plus étroite. Même si la recherche ne correspond pas, elle renverra un score de 0. |
withScore | false | Lorsqu'elle est définie sur false ou non fournie, la fonction renverra un tableau d'éléments correspondants sans leurs scores. |
Sans l'option withScore
:
const data = [ { name : 'John' } , { name : 'Jane' } , { name : 'Doe' } ]
const result = search ( data , [ 'name' ] , 'John' )
console . log ( result ) // [{ name: 'John' }]
Avec l'option withScore
:
const data = [ { name : 'John' } , { name : 'Jane' } , { name : 'Doe' } ]
const result = search ( data , [ 'name' ] , 'John' , { withScore : true } )
console . log ( result )
// [
// { element: { name: 'John' }, score: 1 },
// { element: { name: 'Jane' }, score: 0 },
// { element: { name: 'Doe' }, score: 0 }
// ]
Pour mieux gérer les dépendances dans le monorepo, j'utilise NX.
Installer les dépendances : npm i
Démarrez l'application Web : npm run web-app:serve
Testez la bibliothèque : npm run test:all