【发布时间】:2019-07-02 14:21:09
【问题描述】:
我在我的一个项目中使用this query component,以便用户可以构建查询。
我很难将其解析为实际的示例查询,例如组件输出的这个对象:
const queryParams = {
"rules": [
{
"rules": [
{
"field": "firstName",
"value": "John",
"operator": "="
},
{
"field": "lastName",
"value": "Doe",
"operator": "="
}
],
"combinator": "and"
},
{
"rules": [
{
"field": "age",
"value": "20",
"operator": "="
},
{
"field": "address",
"value": "London",
"operator": "="
}
],
"combinator": "and"
}
],
"combinator": "and"
}
我需要创建一个函数来输出更用户友好的可读输出:
((FirstName = John AND LastName = Doe) AND (AGE = 20 AND Address = London))
我已经尝试过了,但我发现的困难在于:
对象理论上可以无限嵌套,我不知道它是如何嵌套的。是用递归做到这一点的唯一方法吗?或者有没有更简单的方法
规则和组可以在同一个对象中
我目前尝试的方式不会动态工作,因此非常感谢任何帮助或指导。
谢谢
【问题讨论】:
-
您能分享一下您目前的尝试吗?
-
"对象理论上可以无限嵌套" - 使用 for 循环应该可以解决这个问题,您是否尝试过任何递归?分享您的代码
-
如果您决定采用这种方式,您始终可以使用循环和堆栈 (LIFO) 结构来模拟递归。这个(非 JS)解释非常简单:refactoring.com/catalog/replaceRecursionWithIteration.html ...(尽管如果你想学习那些古怪的递归,这似乎是一个很棒的 JS 教程:javascript.info/recursion)
标签: javascript loops object recursion