¿Aún no estás convencido? Experimente su poder de primera mano con esta demostración interactiva.
¿Cómo se compara con otras bibliotecas de búsqueda? Pruébelo usted mismo con este punto de referencia interactivo;)
ss-search está disponible en npm. Instálalo con:
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" }]
Es así de sencillo. Sin configuraciones, simplemente funciona.
Se admiten casi todos los tipos de datos [booleano, número, cadena, objeto, matriz].
// 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
Proporcionar una clave que haga referencia a un objeto encadenará ese objeto usando 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 desea acceder a una propiedad anidada de un objeto para extraer solo un valor único
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
Proporcionar una clave que haga referencia a una matriz encadenará esa matriz usando JSON.stringify
const results = search ( data , [ 'array' ] , 'value2' )
// results: will return our original dataset
Si tiene una serie de objetos en los que desea buscar todas las propiedades
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 tiene una serie de objetos en los que desea que solo se puedan buscar propiedades específicas
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
Personalice su experiencia de búsqueda utilizando las siguientes opciones:
Parámetro de opción | Valor | Descripción |
---|---|---|
withScore | true | Cuando se establece en true , la función de búsqueda devolverá una matriz de objetos, cada uno de los cuales contendrá el elemento coincidente y su puntuación correspondiente. La puntuación representa qué tan cerca coincide el elemento con el texto de búsqueda, y una puntuación más alta indica una coincidencia más cercana. Incluso si la búsqueda no coincide, devolverá una puntuación de 0. |
withScore | false | Cuando se establece en false o no se proporciona, la función devolverá una matriz de elementos coincidentes sin sus puntuaciones. |
Sin opción withScore
:
const data = [ { name : 'John' } , { name : 'Jane' } , { name : 'Doe' } ]
const result = search ( data , [ 'name' ] , 'John' )
console . log ( result ) // [{ name: 'John' }]
Con la opción 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 }
// ]
Para gestionar mejor las dependencias en monorepo, estoy usando NX.
Instalar dependencias: npm i
Inicie la aplicación web: npm run web-app:serve
Pruebe la biblioteca: npm run test:all