[英]Webassembly - Is it possible to GET/Fetch JSON data from an API and manipulate in JS?
[英]How to manipulate json data with AND, OR and NOT operators to get possible conditions
我有一個 JSON 對象,它具有針對不同付款類型的前置和后置過濾器。 我必須計算可以傳遞給另一個 API 的輸入的可能組合。
JSON 示例:
{
"refund": {
"preFilters": {
"type": [ "1" ]
},
"postFilters": {
"flag2": [ "123", "678" ],
"flag5": [ "907", "8752" ]
}
}
在這里,我需要獲得可以通過 AND、OR 和 NOT 運算符計算的可能條件。 例如,在這個 json 中,我必須得到以下 16 種組合:
1= type & (flag2 & flag5),
2= type & (flag2 | flag5),
3= type & (!flag2 & !flag5),
4= type & (!flag2 & flag5),
5= type & (flag2 | !flag5),
6= type & (!flag2 | !flag5),
7= type & (!flag2 | flag5),
8= type & (flag2 | !flag5),
9= type | (flag2 & flag5),
10=type | (flag2 | flag5),
11=type | (!flag2 & !flag5),
12=type | (!flag2 & flag5),
13=type | (flag2 & !flag5),
14=type | (!flag2 | !flag5),
15=type | (!flag2 | flag5),
16=type | (flag2 | !flag5)
而且,preFilters 中的類型和 postFilters 中的標志值也可以有多個值。我需要使用 And、Or 和 Not 運算符以及來自前置和后置過濾器的值來導出這些可能的條件集。
任何建議或解決方案將不勝感激。 謝謝
制作與算法列表結構匹配的函數數組,然后您可以迭代數據中的數組並應用這些函數
const algos = [ (type, flag2, flag5) => type & (flag2 & flag5), (type, flag2, flag5) => type & (flag2 | flag5), (type, flag2, flag5) => type & (~flag2 & ~flag5) // etc ]; const data = { "refund": { "preFilters": { "type": [ "1" ] }, "postFilters": { "flag2": [ "123", "678" ], "flag5": [ "907", "8752" ] } } }; let output = []; data.refund.preFilters.type.forEach(t => { data.refund.postFilters.flag2.forEach(f2 => { data.refund.postFilters.flag5.forEach(f5 => { output.push({ type: t, flag2: f2, flag5: f5, results: algos.map(algo => algo(t, f2, f5)) }); }); }); }); console.log(output);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.