我有一个普通的字符串,包含了一些类似这样的条件。const optionString = '{2109} AND ({2370} OR {1701} OR {2702}) AND {1234} AND ({2245} OR {2339})';
我需要从上面得到一个类似下面结构的对象。
const output = {
and: [
2109,
{ or: [2370, 1071, 2702] },
1234,
{ or: [2245, 2339] },
];
目前,我已经尝试做如下
function parseFormat(strArg) {
var
category,
output = [], // Output
str = strArg.trim(); // Remove unwanted space before processing
str.split('AND').forEach(function(line) {
var removedString = line.replace(/[\])}[{(]/g, '');
var item = removedString.split('OR');
item = item.map(it => {
return Number(it.replace(/ /g, ''))
})
if(item.length > 0) {
output.push(item)
} else {
output.push(item[0])
}
});
return output;
}
它的输出是这样的。
[
[
1069
],
[
1070,
1071,
1072
],
[
1244
],
[
1245,
1339
]
]
我先问你一个问题
- 如何在当前结果中添加AND和OR键?
如果您知道性能方面的好的解决方案,请及时通知我。感谢您抽出时间。
1条答案
按热度按时间ogq8wdun1#