لا تزال غير مقتنع؟ اختبر قوتها بشكل مباشر مع هذا العرض التوضيحي التفاعلي.
كيف يمكن مقارنتها بمكتبات البحث الأخرى؟ اختبر نفسك مع هذا المعيار التفاعلي ;)
بحث ss متاح على 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" }]
الأمر بهذه البساطة. لا توجد تكوينات، أنها تعمل فقط.
يتم دعم جميع أنواع البيانات تقريبًا [boolean، number، string، object، 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
سيؤدي توفير مفتاح يشير إلى كائن إلى تقييد هذا الكائن باستخدام 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 }
// ]
لإدارة التبعيات بشكل أفضل عبر monorepo أستخدم NX.
تثبيت التبعيات: npm i
ابدأ تطبيق الويب: npm run web-app:serve
اختبر المكتبة: npm run test:all