Есть функция, которая должна фильтровать содержимое массива с помощью filter по двум условиям через if и первое условие возвращает ожидаемый результат, а вот во втором условии при выполнении должен вернуться новый объект, а возвращает итерируемый элемент. Подскажите пожалуйста как обойти этот косяк.
function search(value) {
if (value !== "") {
setFiteredArray((prev) =>
prev.filter((theme) => {
if (theme.name.indexOf(value) !== -1) return theme;
else if (
theme.subtopics.some(
(topic) =>
topic.name.toLowerCase().indexOf(value.toLowerCase()) !== -1
) === true
)
return {
...theme,
subtopics: theme.subtopics.filter((topic) =>
topic.name.toLowerCase().indexOf(value.toLowerCase()) !== -1
? topic
: null
)
};
else return null;
})
);
} else {
setFiteredArray(themes);
}
}
массив имееет такой вид: [ {..., name: value, subtopics: [..., name: dfgdfgdfg] } ]