ss search
v1.12.0
まだ納得できませんか?このインタラクティブなデモでその威力を直接体験してください。
他の検索ライブラリと比較してどうですか?このインタラクティブなベンチマークを使って自分でテストしてみてください ;)
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
Web アプリを開始します: npm run web-app:serve
ライブラリをテストします: npm run test:all