Ainda não está convencido? Experimente seu poder em primeira mão com esta demonstração interativa.
Como ela se compara a outras bibliotecas de pesquisa? Teste você mesmo com este benchmark interativo ;)
ss-search está disponível no npm. Instale-o com:
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" }]
É tão simples. Sem configurações, simplesmente funciona.
Quase todos os tipos de dados são suportados [booleano, número, string, objeto, 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
Fornecer uma chave que se refere a um objeto irá restringir esse 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
Se você deseja acessar uma propriedade aninhada de um objeto para extrair apenas um único valor
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
Fornecer uma chave que se refere a um array irá restringir esse array usando JSON.stringify
const results = search ( data , [ 'array' ] , 'value2' )
// results: will return our original dataset
Se você tiver uma matriz de objetos nos quais deseja pesquisar todas as propriedades
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
Se você tiver uma matriz de objetos onde deseja que apenas propriedades específicas sejam pesquisáveis
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
Personalize sua experiência de pesquisa usando as seguintes opções:
Parâmetro de opção | Valor | Descrição |
---|---|---|
withScore | true | Quando definido como true , a função de pesquisa retornará uma matriz de objetos, cada um contendo o elemento correspondente e sua pontuação correspondente. A pontuação representa o quão próximo o elemento corresponde ao texto de pesquisa, com uma pontuação mais alta indicando uma correspondência mais próxima. Mesmo que a pesquisa não corresponda, ela retornará uma pontuação 0. |
withScore | false | Quando definida como false ou não fornecida, a função retornará uma matriz de elementos correspondentes sem suas pontuações. |
Sem opção withScore
:
const data = [ { name : 'John' } , { name : 'Jane' } , { name : 'Doe' } ]
const result = search ( data , [ 'name' ] , 'John' )
console . log ( result ) // [{ name: 'John' }]
Com a opção 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 gerenciar melhor as dependências no monorepo, estou usando o NX.
Instale dependências: npm i
Inicie o aplicativo da web: npm run web-app:serve
Teste a biblioteca: npm run test:all