【发布时间】:2019-06-11 05:35:59
【问题描述】:
有一个规则嵌套在其他规则中的输入结构。在规则数组中,只要有 'data' 属性,其值必须更改为“foo”
示例输入对象:
{条件:'and',规则:[{data:'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;
}
【问题讨论】:
-
如果您的示例使用常规的直引号并且没有像
[value: ‘456”]这样的语法错误,将会很有帮助 -
另外,您需要原地更换商品还是退回新商品?
-
@MarkMeyer 我想返回整个更改的对象。我在代码中的错误是,我没有返回,并且额外检查它是否有递归调用的规则帮助(如在批准的答案中)
标签: javascript angular recursion lodash iterated-function