Попытка написать эту функцию eval, которая принимает случаи, перебирает их в цикле и должна проверять, соответствует ли она условию в массиве условий и возвращает истину или ложь. Я не уверен, как лучше всего отформатировать массив условий и выполнить на нем сопоставление. Условия вложены на n уровней в глубину, поэтому мы пытаемся получить рекурсивную функцию.
console.log(cases.forEach(c => eval(formattedCondition, c.item)))
const conditions = [
"OR",
["AND",["==","maker","airbus"],["==","name","A320"]],
["AND",[ "==", "maker","boeing"]],
["OR",["==","name","B767"]]
]
const cases = [
{
"item": {
'maker': 'airbus',
'name':"A320",
}
// should return true for this case
},
{
"item": {
'maker': 'embraer',
'name':"e175",
}
// should return false for this case
},
{
"item": {
'maker': 'boeing',
}
// should return true for this case
},
{
"item": {
'name':"B767",
}
// should return true for this case
},
{
"item": {
'maker': 'boeing',
'name':"B777",
}
// should return false for this case
},
]