diff --git a/script-universal_function.js b/script-universal_function.js index 776a85a5..95f8a9ad 100644 --- a/script-universal_function.js +++ b/script-universal_function.js @@ -393,29 +393,25 @@ function searchCards(cards,attr1,attr2,fixMainColor,types,typeAndOr,rares,awoken { let cardsRange = cards.concat(); //这里需要复制一份原来的数组,不然若无筛选,后面的排序会改变初始Cards //属性 - if (attr1 != null && attr1 === attr2) + if (attr1 != null && attr1 === attr2 || //主副属性一致并不为空 + (attr1 === 6 && attr2 === -1)) //主副属性都为“无” { //当两个颜色相同时,主副一样颜色的只需判断一次 cardsRange = cardsRange.filter(c=>c.attrs[0] === attr1 && c.attrs[1] === attr1); - }else if (fixMainColor || attr1 === 6 || attr2 === -1) //如果固定了顺序,或者主副属性选的是无 + }else if (fixMainColor) //如果固定了顺序 { - if (attr1 != null) - { - cardsRange = cardsRange.filter(c=>c.attrs[0] == attr1); - } - if (attr2 != null) - { - cardsRange = cardsRange.filter(c=>c.attrs[1] == attr2); - } + const a1null = attr1 === null, a2null = attr2 === null; + cardsRange = cardsRange.filter(c=> + (a1null ? true : c.attrs[0] === attr1) && + (a2null ? true : c.attrs[1] === attr2) + ); }else //不限定顺序时 { - if (attr1 != null) - { - cardsRange = cardsRange.filter(c=>c.attrs.includes(attr1)); - } - if (attr2 != null) - { - cardsRange = cardsRange.filter(c=>c.attrs.includes(attr2)); - } + const search_attrs = [attr1, attr2].filter(a => a !== null && a >= 0 && a<=5); //所有非空属性 + const anone = attr1 === 6 || attr2 === -1; //是否有“无”属性 + cardsRange = cardsRange.filter(c=> + search_attrs.every(a=>c.attrs.includes(a)) && + (anone ? (c.attrs.includes(6) || c.attrs.includes(-1)) : true) + ); } //类型 if (types.length>0)