Как получить массив объектов только с объектами которые удовлетворяют поиску во fuse.js?

Есть объект с информацией об авторах, есть набор опций fuse.js, и есть функция-конструктор Fuse которая осуществляет поиск по ключам объекта, и возвращает массив объектов с совпадениями по ключам.

const authors = [
  {
    "char": "A",
    "list": [
      { "id": 12, "name": 'Aaron Akinyemi' },
      { "id": 13, "name": 'Annie Proulx' },
    ]
  },
  {
    "char": "B",
    "list": [
      { "id": 11, "name": 'Beatrix Protter' },
      { "id": 14, "name": 'Barbara James' },
    ]
  }
]

const options = {
  includeScore: true,
  // Search in `list` array
  keys: ['list.name']
}

const fuse = new Fuse(authors, options)

const result = fuse.search('ro')
// Должен вывести имена которые содержат словосочетание ro
for (let i = 0; i < result.length; i++) {
  console.log(result[i].item)
}

В результате имеем вот это:

{
  char: "A",
  list: [
   {
    id: 12,
    name: "Aaron Akinyemi"
   }, 
   {
     id: 13,
     name: "Annie Proulx"
   }
  ]
}
{
  char: "B",
  list: [
   {
      id: 11,
      name: "Beatrix Protter"
    }, 
    {
      id: 14,
      name: "Barbara James"
     }
   ]
}

Как видно, получается что если в массиве есть хотя бы один элемент который соответствует результату поиска, выводится весь массив целиком, а не элемент в котором найдено совпадение. Мне же нужно чтобы выводился массив только с теми элементами в которых было найдено совпадение, т.е так:

{
  char: "A",
  list: [
   {
    id: 12,
    name: "Aaron Akinyemi"
   }, 
   {
     id: 13,
     name: "Annie Proulx"
   }
  ]
}
{
  char: "B",
  list: [
   {
      id: 11,
      name: "Beatrix Protter"
    }
   ]
}

Можно ли получить такой результат через fuse?

const authors = [
  {
    "char": "A",
    "list": [
      { "id": 12, "name": 'Aaron Akinyemi' },
      { "id": 13, "name": 'Annie Proulx' },
    ]
  },
  {
    "char": "B",
    "list": [
      { "id": 11, "name": 'Beatrix Protter' },
      { "id": 14, "name": 'Barbara James' },
    ]
  }
]

const options = {
  includeScore: true,
  // Search in `list` array
  keys: ['list.name']
}

const fuse = new Fuse(authors, options)

const result = fuse.search('ro')
// Должен вывести имена которые содержат словосочетание ro
for (let i = 0; i < result.length; i++) {
  console.log(result[i].item)
}
<script src="https://cdn.jsdelivr.net/npm/fuse.js/dist/fuse.js"></script>


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