diff --git a/multi.html b/multi.html
index a221b78e..b8981c53 100644
--- a/multi.html
+++ b/multi.html
@@ -862,16 +862,16 @@ var formation = new Formation(teamsCount,5);
diff --git a/script-universal_function.js b/script-universal_function.js
index 66006aa3..f032f8eb 100644
--- a/script-universal_function.js
+++ b/script-universal_function.js
@@ -679,7 +679,7 @@ function calculateAbility_max(id, solo, teamsCount, maxLevel = 110) {
}
}
//搜索卡片用
-function searchCards(cards, {attrs: sAttrs, fixMainColor, types, typeAndOr, rares:[rareLow, rareHigh], awokens, sawokens, equalAk, incSawoken, canAssist, canLv110, is8Latent}) {
+function searchCards(cards, {attrs: sAttrs, fixMainColor, types, typeAndOr, rares, awokens, sawokens, equalAk, incSawoken, canAssist, canLv110, is8Latent}) {
let cardsRange = cards.concat(); //这里需要复制一份原来的数组,不然若无筛选,后面的排序会改变初始Cards
if (canAssist) cardsRange = cardsRange.filter(card=>card.canAssist);
if (canLv110) cardsRange = cardsRange.filter(card=>card.limitBreakIncr>0);
@@ -716,14 +716,13 @@ function searchCards(cards, {attrs: sAttrs, fixMainColor, types, typeAndOr, rare
}
//类型
if (types.length > 0) {
- cardsRange = cardsRange.filter(({types: cTypes}) =>
- //所有type都满足,或只需要满足一个type
- types[typeAndOr ? 'every' : 'some'](t => cTypes.includes(t))
- );
+ //所有type都满足,或只需要满足一个type
+ let logicFunc = typeAndOr ? Array.prototype.every : Array.prototype.some;
+ cardsRange = cardsRange.filter(({types: cTypes}) => logicFunc.call(types, t => cTypes.includes(t)));
}
//稀有度
- if (rareLow !== 1 || rareHigh !== 10) { //不是1~10时才进行筛选
- cardsRange = cardsRange.filter(({rarity}) => rarity >= rareLow && rarity <= rareHigh);
+ if (rares.length < 10) { //不是1~10时才进行筛选
+ cardsRange = cardsRange.filter(({rarity}) => rares.includes(rarity));
}
//觉醒
let searchAwokens = [];
diff --git a/script.js b/script.js
index 19a58211..d3056e26 100644
--- a/script.js
+++ b/script.js
@@ -3539,45 +3539,12 @@ function initialize() {
//稀有度筛选
const s_rareDiv = searchBox.querySelector(".rare-div");
const s_rareLst = s_rareDiv.querySelector(".rare-list");
- const s_rareIcons = Array.from(s_rareLst.querySelectorAll(".rare-icon"));
- const s_rareLows = Array.from(s_rareLst.querySelectorAll("input[name='rare-low']"));
- const s_rareHighs = Array.from(s_rareLst.querySelectorAll("input[name='rare-high']"));
- function s_rareIcons_onclick()
- {
- const thisValue = parseInt(this.getAttribute("data-rare-icon"),10);
- const radioLow = s_rareLows.find(radio=>radio.checked);
- const radioHigh = s_rareHighs.find(radio=>radio.checked);
- const rangeLow = radioLow ? parseInt(radioLow.value,10) : 1;
- const rangeHigh = radioHigh ? parseInt(radioHigh.value,10) : 10;
-
- s_rareLows.find(radio=>parseInt(radio.value,10) == (
- rangeLow != rangeHigh ?
- thisValue :
- (
- thisValue == rangeLow ?
- 1 :
- Math.min(thisValue,rangeLow)
- )
- )).checked = true;
- s_rareHighs.find(radio=>parseInt(radio.value,10) == (
- rangeLow != rangeHigh ?
- thisValue :
- (
- thisValue == rangeLow ?
- 10 :
- Math.max(thisValue,rangeHigh)
- )
- )).checked = true;
- }
- s_rareIcons.forEach(icon=>icon.onclick = s_rareIcons_onclick);
+ const s_rareChecks = Array.from(s_rareLst.querySelectorAll("input[name='search-rare']"));
const s_rareClear = s_rareDiv.querySelector(".rare-clear");
s_rareClear.onclick = function(){
- s_rareLows[0].checked = true;
- s_rareHighs[s_rareHighs.length-1].checked = true;
+ s_rareChecks.forEach(i => i.checked = true);
}
- //const s_rare = s_rareLi.map(li=>li.querySelector(".rare-check")); //checkbox集合
-
const s_awokensDiv = searchBox.querySelector(".awoken-div");
const s_awokensUl = s_awokensDiv.querySelector(":scope .all-awokens .awoken-ul");
const s_awokensLi = Array.from(s_awokensUl.querySelectorAll(".awoken-count"));
@@ -3923,7 +3890,7 @@ function initialize() {
s_add_show_abilities_with_awoken.onchange = reShowSearch;
//恢复搜索状态
- searchBox.recoverySearchStatus = function({attrs, fixMainColor, types, typeAndOr, rares:[rareLow, rareHigh], awokens, sawokens, equalAk, incSawoken, canAssist, canLv110, is8Latent, specialFilters}) {
+ searchBox.recoverySearchStatus = function({attrs, fixMainColor, types, typeAndOr, rares, awokens, sawokens, equalAk, incSawoken, canAssist, canLv110, is8Latent, specialFilters}) {
//属性这里是用的2进制写
attrs.forEach((attr, ai)=>{
const attr_list = s_attr_lists[ai];
@@ -3934,8 +3901,7 @@ function initialize() {
s_fixMainColor.checked = fixMainColor;
s_types.filter(opt=>types.includes(parseInt(opt.value,10))).forEach(opt=>opt.checked = true);
s_typeAndOr.checked = typeAndOr;
- (s_rareLows.find(opt=>parseInt(opt.value,10) == rareLow) || s_rareLows[0]).checked = true;
- (s_rareHighs.find(opt=>parseInt(opt.value,10) == rareHigh) || s_rareHighs[s_rareHighs.length-1]).checked = true;
+ s_rareChecks.filter(opt=>rares.includes(parseInt(opt.value,10))).forEach(opt=>opt.checked = true);
s_selectedAwokensUl.innerHTML = "";
//添加觉醒
@@ -3971,10 +3937,7 @@ function initialize() {
searchBox.getSearchOptions = function(){
const attrs = s_attr_lists.map(list=>parseInt(returnRadiosValue(list), 2) || 0);
const types = returnCheckBoxsValues(s_types).map(Str2Int);
- const rares = [
- parseInt(returnRadiosValue(s_rareLows), 10),
- parseInt(returnRadiosValue(s_rareHighs), 10),
- ];
+ const rares = returnCheckBoxsValues(s_rareChecks).map(Str2Int);
const sawokens = returnCheckBoxsValues(s_sawokens).map(Str2Int);
const awokens = s_awokensIcons.filter(btn => parseInt(btn.getAttribute("data-awoken-count"), 10) > 0).map(btn => {
return {
diff --git a/solo.html b/solo.html
index bc37d2b2..b775fc9e 100644
--- a/solo.html
+++ b/solo.html
@@ -697,16 +697,16 @@ var formation = new Formation(teamsCount,6);
diff --git a/triple.html b/triple.html
index aba8df05..8844edbf 100644
--- a/triple.html
+++ b/triple.html
@@ -1783,16 +1783,16 @@ var formation = new Formation(teamsCount,6);