Как сделать .slice, чтобы показать лучшие 3 результата по функции фильтра - PullRequest
0 голосов
/ 11 февраля 2020

Я хочу показать первые 3 результата с помощью функции .slice.

Как это сделать после функции фильтра

Я попытался добавить .slice после совпадения в функции фильтра, но он не работает должным образом

Ниже приведен код

filteredEntitySearch () {
      let entity = this.options
      return entity.filter((entity) => {
        return entity.name.match(this.searchQuery).slice(0, 4)
      })
    },

Для некоторого контекста основная функция (FilterEntitySearch) предназначена для

  • получить все совпадающие сущности с поисковым запросом (searchQuery)
  • показать 3 лучших результата

Спасибо за помощь!

Ответы [ 3 ]

1 голос
/ 11 февраля 2020

Переместите его за пределы вашего фильтра:

filteredEntitySearch () {
      let entity = this.options
      return entity.filter((entity) => {
        return entity.name.match(this.searchQuery);
      }).slice(0, 3);
}
1 голос
/ 11 февраля 2020

Вы допустили несколько ошибок.

  1. Имя параметра функции фильтра не должно совпадать с именем массива для лучшего понимания
  2. Функция среза используется в неправильном месте
  3. Параметр slice должен быть slice (0, 3), если вы хотите 3 результата

Ваш код должен быть таким:

filteredEntitySearch () {
      let entities = this.options
      return entities.filter((entity) => {
        return entity.name.match(this.searchQuery)
      }).slice(0, 3)
    },
0 голосов
/ 11 февраля 2020

Здесь вы получаете результаты после фильтра (17 элементов), но отображаются только первые 3

var arr=[1,2,3,4,5,6,7,6,5,6,5,5,5,4,4,3,3,22,2,2,1,1,4,5,6,77]
console.log(arr.filter(e=>e>3).slice(0,3))
...