props.medications.filter(f => props.purpose === "" ? f : f.Purposes.forEach(i => i.Purpose === props.purpose))
props.medications
.filter(f => f.Purposes.findIndex(i => props.purpose === i.Purpose) > -1)
// Если ни одного нет, findIndex вернет -1,
// условие не выполнится и элемент отфильтруется.
const props = {
purpose: "Здоровье марсиан",
medications: [
{
Article: "Первое",
Purposes: [
{
Purpose: "Мужское здоровье"
},
{
Purpose: "Женское здоровье"
}
]
},
{
Article: "Второе",
Purposes: [
{
Purpose: "Детское здоровье"
}
]
},
{
Article: "Третье",
Purposes: [
{
Purpose: "Здоровье марсиан"
},
{
Purpose: "Мужское здоровье"
}
]
}
]
};
console.log(
props.medications.filter(
(f) => !props.purpose || f.Purposes.find((e) => e.Purpose === props.purpose)
)
);