Все еще не убеждены? Испытайте его мощь на собственном опыте с помощью этой интерактивной демонстрации.
Чем она отличается от других поисковых библиотек? Проверьте себя с помощью этого интерактивного теста ;)
ss-search доступен на npm. Установите его с помощью:
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" }]
Это так просто. Никаких настроек, все работает.
Поддерживаются почти все типы данных [логическое значение, число, строка, объект, массив].
// 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
Предоставление ключа, который ссылается на объект, приведет к преобразованию этого объекта в строку с помощью JSON.stringify.
const results = search ( data , [ 'object' ] , 'property' )
// results: will return our original dataset as it matches the property key "nestedProperty" of our object
Если вы хотите получить доступ к вложенному свойству объекта, чтобы извлечь только одно значение
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
Предоставление ключа, который ссылается на массив, приведет к преобразованию этого массива в строку с помощью JSON.stringify.
const results = search ( data , [ 'array' ] , 'value2' )
// results: will return our original dataset
Если у вас есть массив объектов, по всем свойствам которого вы хотите выполнить поиск
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
Если у вас есть массив объектов, в котором вы хотите, чтобы только определенные свойства были доступны для поиска
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
Настройте свой поиск, используя следующие параметры:
Параметр опции | Ценить | Описание |
---|---|---|
withScore | true | Если установлено значение true , функция поиска вернет массив объектов, каждый из которых содержит соответствующий элемент и соответствующую ему оценку. Оценка показывает, насколько близко элемент соответствует искомому тексту: более высокий балл указывает на более близкое соответствие. Даже если поиск не соответствует, он вернет оценку 0. |
withScore | false | Если установлено значение false или не указано, функция вернет массив совпадающих элементов без их оценок. |
Без опции withScore
:
const data = [ { name : 'John' } , { name : 'Jane' } , { name : 'Doe' } ]
const result = search ( data , [ 'name' ] , 'John' )
console . log ( result ) // [{ name: 'John' }]
С опцией 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 }
// ]
Чтобы лучше управлять зависимостями в монорепозитории, я использую NX.
Установите зависимости: npm i
Запустите веб-приложение: npm run web-app:serve
Протестируйте библиотеку: npm run test:all