有一个输入结构,其规则嵌套在其他规则中。在规则数组中,只要有“数据”属性,就必须将其值更改为“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;
}