Created
September 22, 2023 09:58
-
-
Save highoncarbs/1d45605fc345e94bc2a5851d3f37195c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const jsondata = { | |
"operator": "and", | |
"rules": [ | |
{ | |
"operator": "and", | |
"rules": [ | |
{ | |
"operator": "and", | |
"rules": [ | |
{ | |
"first": { | |
"name": "hra" | |
}, | |
"second": "4000", | |
"compare_operator": "+", | |
"second_value_type": "value" | |
} | |
], | |
"first": { | |
"name": "location" | |
}, | |
"second": { | |
"name": "abroad" | |
}, | |
"compare_operator": "=", | |
"second_value_type": "master" | |
} | |
], | |
"first": { | |
"name": "basic" | |
}, | |
"second": "0.4", | |
"compare_operator": "*", | |
"second_value_type": "value" | |
} | |
] | |
} // Try edit me | |
let formula = ""; | |
formula = formula + jsondata.rules[0].first.name + jsondata.rules[0].compare_operator | |
if (jsondata.rules[0].second_value_type == 'value') { | |
formula = formula + jsondata.rules[0].second | |
} | |
else{ | |
formula = formula + jsondata.rules[0].second.name | |
} | |
jsondata.rules[0].rules.forEach(row => { | |
console.log('Row -- ',row) | |
let second_value = row.second_value_type == 'value' ? row.second : row.second.name | |
let rule_level_one = checkRule(row.first.name, row.operator, second_value) // Checks for true or false | |
console.log('Row --2 ',second_value) | |
if (rule_level_one) { | |
row.rules.forEach(sub_row => { | |
let second_sub_value = sub_row.second_value_type == 'value' ? sub_row.second : sub_row.second.name | |
let rule_level_two = checkRule(sub_row.first.name, sub_row.operator, second_sub_value) // Checks for true or false | |
if (rule_level_two) { | |
formula = formula + sub_row.first.name + sub_row.compare_operator + second_sub_value | |
} | |
}) | |
} | |
console.log(formula) | |
}) | |
console.log(formula) | |
function checkRule(one,operator,two){ | |
if(operator == '=='){ | |
return one == two | |
} | |
return false | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment