簡體   English   中英

如何使用 AND、OR 和 NOT 運算符操作 json 數據以獲得可能的條件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM