Существует структура ввода с правилами, вложенными в другие правила. В массиве правил, где бы ни было свойство data, его значение должно быть изменено на «foo»
Примеры объектов ввода:
{условие: 'и', правила: [{данные: '123'}]}
{условие: 'или', правила: [{данные: '123'}, {условие: 'и', правила: [{данные: '123'}, {данные: '456'}] }]
Я рекурсивно вызываю функцию для итерации, и если у элемента есть свойство данных, меняем его значение
Моя функция:
function iterateRules(input) {
input.rules.map(function(item) {
if(_.has(item, "rules")){
this.iterateRules(item); //bug-needs extra check like accepted answer
} else if(_.has(item, “data”)){
return item.data = “foo”;
}
}, this);
return input;
}