Vue forEach вычисляется

Я создаю фильтр флажка, который сохраняет значение флажка, на которое нажали, в массиве. После этого вычисленные данные должны обновляться, но я всегда получаю неопределенность.

Структура данных: казино {brand_tags {Brand_Tag_Name}}

Вычислено:

computed: {
    filteredCasinos: function() {
      return this.casinos.forEach(casino => {
        return casino.brand_tags.filter(brandTag => {
          return this.filteredCategories.includes(brandTag.Brand_Tag_Name)
        })
      })
    }
},

HTML (но, думаю, это работает нормально)

        <label for="Featured">Featured Casinos
          <input type="checkbox" v-model="filteredCategories" value="Featured">
        </label>
        <label for="Featured">Big Brands
          <input type="checkbox" v-model="filteredCategories" value="Big Brand">
        </label>
        <label for="Featured">New Casinos
          <input type="checkbox" v-model="filteredCategories" value="New Casino">
        </label>
        <label for="Featured">Pay n Play
          <input type="checkbox" v-model="filteredCategories" value="Pay N Play">
        </label>
        <label for="Featured">Trusted Casinos
          <input type="checkbox" v-model="filteredCategories" value="Trusted Casino">
        </label>

person foka135    schedule 13.12.2020    source источник


Ответы (1)


Это происходит потому, что return this.casinos.forEach возвращает значение undefined.

{ filteredCasinos: function() {
return this.casinos.filter(casino => {
 return !!casino.brand_tags.find(brandTag => {
    return this.filteredCategories.includes(brandTag.Brand_Tag_Name)
    })
  })
}
person Gurkan Ugurlu    schedule 13.12.2020
comment
но он также возвращает undefined, когда я не возвращаю forEach. Или есть лучший способ пройти через brand_tags казино? - person foka135; 13.12.2020
comment
Если вы используете вычисляемое значение, вам нужно вернуть значение. Если вы хотите вернуть массив, вы можете использовать функцию карты. filteredCasinos: function() { return this.casinos.map(casino => { return casino.brand_tags.filter(brandTag => { return this.filteredCategories.includes(brandTag.Brand_Tag_Name) }) }) } - person Gurkan Ugurlu; 13.12.2020
comment
Это вернет только все казино, и они не будут фильтроваться. - person foka135; 13.12.2020
comment
Я отредактировал сообщение. Надеюсь, это решит ваш вопрос :) - person Gurkan Ugurlu; 13.12.2020
comment
Получилось огромное спасибо!!!! - person foka135; 13.12.2020