【发布时间】:2019-08-23 12:00:22
【问题描述】:
我正在使用“jQuery Query Builder”(在 UI 中)根据用户输入生成自定义对象,我需要将此对象作为“json-rules-engine”(在服务器中)的输入来生成a 基于对象条件的结果。但问题是查询生成器以不同格式提供输出,而规则引擎以其他格式接收输入。
我能够遍历对象的所有节点并分别获取“键/值”。但我无法使用这些“值”来生成具有不同结构的新对象。
var object = {
"condition": "OR",
"rules": [{
"condition": "AND",
"rules": [{
"field": "name",
"operator": "equal",
"value": "romeo"
},
{
"field": "category",
"operator": "not_equal",
"value": "books"
}
]
},
{
"condition": "AND",
"rules": [{
"field": "price",
"operator": "greater_or_equal",
"value": 100
},
{
"field": "in_stock",
"operator": "equal",
"value": 1
}
]
}
]
};
function printObj(obj) {
for (var key in obj) {
var value = obj[key];
if (typeof value === 'object') {
printObj(value);
} else {
console.log(value);
}
}
}
printObj(object);
目前我可以遍历所有节点并读取所有“键/值”。但我需要将此对象转换为以下内容:
预期输出:
{
any: [{
all: [{
fact: 'name',
operator: 'equal',
value: "romeo"
}, {
fact: 'category',
operator: 'not_equal',
value: "books"
}]
}, {
all: [{
fact: 'price',
operator: 'greater_or_equal',
value: 100
}, {
fact: 'in_stock',
operator: 'equal',
value: 1
}]
}]
}
【问题讨论】:
标签: javascript jquery arrays object recursion