Immer noch nicht überzeugt? Erleben Sie seine Kraft aus erster Hand mit dieser interaktiven Demo.
Wie schneidet es im Vergleich zu anderen Suchbibliotheken ab? Testen Sie es selbst mit diesem interaktiven Benchmark ;)
ss-search ist auf npm verfügbar. Installieren Sie es mit:
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" }]
So einfach ist das. Keine Konfigurationen, es funktioniert einfach.
Fast alle Datentypen werden unterstützt [Boolescher Wert, Zahl, Zeichenfolge, Objekt, Array].
// 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
Durch die Bereitstellung eines Schlüssels, der auf ein Objekt verweist, wird dieses Objekt mithilfe von JSON.stringify stringifiziert
const results = search ( data , [ 'object' ] , 'property' )
// results: will return our original dataset as it matches the property key "nestedProperty" of our object
Wenn Sie auf eine verschachtelte Eigenschaft eines Objekts zugreifen möchten, um nur einen einzelnen Wert zu extrahieren
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
Durch die Bereitstellung eines Schlüssels, der auf ein Array verweist, wird dieses Array mithilfe von JSON.stringify in Strings umgewandelt
const results = search ( data , [ 'array' ] , 'value2' )
// results: will return our original dataset
Wenn Sie über ein Array von Objekten verfügen, für das Sie alle Eigenschaften durchsuchen möchten
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
Wenn Sie über ein Array von Objekten verfügen, in dem nur bestimmte Eigenschaften durchsuchbar sein sollen
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
Passen Sie Ihr Sucherlebnis mit den folgenden Optionen an:
Optionsparameter | Wert | Beschreibung |
---|---|---|
withScore | true | Wenn die Suchfunktion auf true gesetzt ist, gibt sie ein Array von Objekten zurück, von denen jedes das übereinstimmende Element und die entsprechende Bewertung enthält. Der Wert gibt an, wie genau das Element mit dem Suchtext übereinstimmt, wobei ein höherer Wert auf eine engere Übereinstimmung hinweist. Selbst wenn die Suche keine Übereinstimmung ergibt, wird eine Punktzahl von 0 zurückgegeben. |
withScore | false | Wenn die Funktion auf false gesetzt oder nicht angegeben ist, gibt sie ein Array übereinstimmender Elemente ohne deren Bewertungen zurück. |
Ohne withScore
-Option:
const data = [ { name : 'John' } , { name : 'Jane' } , { name : 'Doe' } ]
const result = search ( data , [ 'name' ] , 'John' )
console . log ( result ) // [{ name: 'John' }]
Mit der 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 }
// ]
Um Abhängigkeiten im gesamten Monorepo besser verwalten zu können, verwende ich NX.
Abhängigkeiten installieren: npm i
Starten Sie die Web-App: npm run web-app:serve
Testen Sie die Bibliothek: npm run test:all