多条件逻辑处理方案

1 阅读1分钟

js中,用数组的方法,统一处理多判断条件的逻辑,优化方案,比如有个判断值有超多判断条件:

const isEditConditions = [a=== "owner", !canEdit, isEditable];
const isEdit = isEditConditions.every(Boolean);

处理||,&&,或其他多种判断逻辑交杂;

1、简单的

&& 使用 every,确保所有条件都为真; || 使用 some,确保至少一个条件为真;

2、处理 &&、|| 混合的,

只要最外层是 &&,则数组使用 every进行命中, 内部的||作为子条件项处理即可;

同样,只要最外层是 ||,则数组使用 some进行命中, 内部的&&作为子条件项处理即可:


const conditions = [
  a === "owner",
  !!canEdit,
  isEditable,
  (condition1 || condition2) // 复杂条件
];

const conditions2 = [
  a === "owner",
  !!canEdit,
  isEditable,
  (condition1 && condition2) // 复杂条件
];

// 你可以写一个函数来处理所有条件
const allConditions = (...conditions) => conditions.every(Boolean);

const someConditions = (...conditions2) => conditions2.some(Boolean);

const isEdit = allConditions(...conditions); // 所有条件都为真
const isApproved = someConditions(...conditions2); // 至少一个条件为真

3、其他逻辑

还有其他逻辑吗? 1、蕴含逻辑: Atrue -> Btrue;

2、对称逻辑:同时真假,Atrue && Btrue -> true、Afalse && Bfalse -> false;

3、否定: ;

4、联合逻辑: Atrue ^ Btrue -> true;

5、析取逻辑;

6、互斥;

7、终结条件;

4、组合逻辑如何处理呢?逻辑之间有依赖怎么处理呢?