Здесь довольно легко исправить:
this.filteredListing = this.filteredListing.filter(item => {
if(this.filters['bedroomCount'].length === 0) {
return true;
} else {
return this.filters['bedroomCount'].some(elem => {
if(item['bedroomCount'] === elem) {
return true;
} else {
return false;
}
});
}
});
Но это не исправляет то, что вызвало ошибку, во-первых: отсутствие return
было трудно обнаружить и трудно проверить ! Давайте это исправим. Поскольку мы используем this
Я предполагаю, что у нас есть класс, поэтому давайте добавим метод, кодирующий логи фильтрации c:
filterByBedroomCount (item) {
// It's a lot to type over and over so we'll pull it out.
const ct = this.filters.bedroomCount;
// Added bonus, the conditional logic fits readably on to
// one line now.
return ct.some(elem => item.bedroomCount === elem);
}
Обратите внимание, что я также ужесточил условная логика c, вам не нужны условные операторы, когда сами значения являются истинными / ложными. Помогает, что .some
в пустом массиве всегда будет возвращать false, что означает, что вам даже не нужна проверка длины. Теперь вы можете передать имитируемый элемент методу в модульном тесте, чтобы убедиться, что он выполняет то, что вам нужно.