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、终结条件;