Как поставить лимиты на количество результатов поиска, fuseJS

Я реализовывал поиск по массиву объектов при помощи FuseJS и столкнулся с проблемой - не могу ограничить количество выдаваемых объектов. Единственное решение, которое я нашёл, - использовать splice, но я не уверен в правильности данного метода.

let fuse = FuseSearch(list);
let data = fuse.search(searchQuery).splice(0, 10);

Ответы (1 шт):

Автор решения: nörbörnën

Methods -> search

The options:

limit (type: number): Denotes the max number of returned search results.

const list = [{"title":"Old Man's War","author":{"firstName":"John","lastName":"Scalzi"}},{"title":"The Lock Artist","author":{"firstName":"Steve","lastName":"Hamilton"}},{"title":"HTML5","author":{"firstName":"Remy","lastName":"Sharp"}},{"title":"Right Ho Jeeves","author":{"firstName":"P.D","lastName":"Woodhouse"}},{"title":"The Code of the Wooster","author":{"firstName":"P.D","lastName":"Woodhouse"}},{"title":"Thank You Jeeves","author":{"firstName":"P.D","lastName":"Woodhouse"}},{"title":"The DaVinci Code","author":{"firstName":"Dan","lastName":"Brown"}},{"title":"Angels & Demons","author":{"firstName":"Dan","lastName":"Brown"}},{"title":"The Silmarillion","author":{"firstName":"J.R.R","lastName":"Tolkien"}},{"title":"Syrup","author":{"firstName":"Max","lastName":"Barry"}},{"title":"The Lost Symbol","author":{"firstName":"Dan","lastName":"Brown"}},{"title":"The Book of Lies","author":{"firstName":"Brad","lastName":"Meltzer"}},{"title":"Lamb","author":{"firstName":"Christopher","lastName":"Moore"}},{"title":"Fool","author":{"firstName":"Christopher","lastName":"Moore"}},{"title":"Incompetence","author":{"firstName":"Rob","lastName":"Grant"}},{"title":"Fat","author":{"firstName":"Rob","lastName":"Grant"}},{"title":"Colony","author":{"firstName":"Rob","lastName":"Grant"}},{"title":"Backwards, Red Dwarf","author":{"firstName":"Rob","lastName":"Grant"}},{"title":"The Grand Design","author":{"firstName":"Stephen","lastName":"Hawking"}},{"title":"The Book of Samson","author":{"firstName":"David","lastName":"Maine"}},{"title":"The Preservationist","author":{"firstName":"David","lastName":"Maine"}},{"title":"Fallen","author":{"firstName":"David","lastName":"Maine"}},{"title":"Monster 1959","author":{"firstName":"David","lastName":"Maine"}}];

const fuseOptions = {
  keys: ["title", "author.firstName"]
};

const fuse = new Fuse(list, fuseOptions);

const searchPattern = "Stephen";

const result = fuse.search(searchPattern, {
  limit: 2
});

console.log(result.length);
console.log(result);
<script src="https://cdn.jsdelivr.net/npm/fuse.js/dist/fuse.js"></script>


Кстати, вам понравится как реализована обработка limit:

if (isNumber(limit) && limit > -1) {
  results = results.slice(0, limit)
}
→ Ссылка