У меня есть массив категорий, который содержит объектный массив специализаций. Когда я пытаюсь отфильтровать его по специализациям, что-то идет не так (список категорий, который не должен изменяться и содержать все данные, тоже меняется. И когда я удаляю буквы из списка поиска данных, он не возвращается). Я перепробовал много методов, и в конце код стал таким (я знаю, что это не очень хороший код, но я пробовал много вещей и просто устал набирать его);
Это мой метод фильтрации:
this.setState(prevState => {
const { categories } = prevState;
let filtered = [];
for (let i = 0; i < categories.length; i++) {
let newCategory = categories[i];
const { specializations } = categories[i];
let newSpecs = [];
for (let j = 0; j < specializations.length; j++) {
const { specName } = specializations[j];
if (specName.indexOf(search) !== -1) {
newSpecs.push(specializations[j]);
}
};
newCategory.specializations = newSpecs;
if (newSpecs.length>0) {
filtered.push(newCategory);
}
}
return {resultCategories:filtered}
});
Вот как я отображаю:
category.specializations.map(
(spec, index) =>
(index < 5 || collapsed[cat_index]) && (
<Text
onPress={() =>
this.props.navigation.navigate("CreateOrderSecond", {
spec: spec.id
})
}
style={styles.specs}
key={index}
>
{spec.specName}
</Text>
)
);
Как выглядят категории:
Category{
avatar Image{...}
categoryName string
created string($date-time)
id integer($int64)
lastUpdated string($date-time)
specializations [Specialization{
avatar Image{...}
created string($date-time)
id integer($int64)
lastUpdated string($date-time)
masterName string
specName string
}]
}