跳至內容
Astera Technology

選項數量要排除本欄自己的篩選

只移除正在計選項的那一欄篩選,其他選擇照留。

下載完整個案資料及參考答案 ↓

訂判斷及所需輸入

本例已選紅色、M 尺碼。計顏色選項時暫時移除顏色條件,但 M 照留。所附紀錄是紅二、藍一;仍用紅色限制來數顏色,藍就會誤成零。

已填本地測試工作表
情況輸入 JSON
原例測試{"facet":"colour","filters":{"colour":"red","size":"M"},"records":[{"colour":"red","size":"M"},{"colour":"red","size":"M"},{"colour":"blue","size":"M"},{"colour":"blue","size":"L"}]}
下載可編輯 CSV ↓

跑所附比較

本地函數真正套所訂選項範圍。這些是其他篩選下可選的數量,不是已選紅色結果的總數。

錯誤及所需輸出
路徑輸出 JSON
錯誤路徑{"counts":{"red":2,"blue":0}}
所需路徑{"counts":{"red":2,"blue":1}}
下載可編輯 CSV ↓
完整本地 Node24.14.1 程序
import assert from 'node:assert/strict';

const run=function run(i,corrected=true){
    if(i.facet!=='colour')return {held:true};
    const eligible=i.records.filter(r=>r.size===i.filters.size&&(!corrected?r.colour===i.filters.colour:true));
    return {counts:{red:eligible.filter(r=>r.colour==='red').length,blue:eligible.filter(r=>r.colour==='blue').length}};
  };
const cases=[{"input":{"facet":"colour","filters":{"colour":"red","size":"M"},"records":[{"colour":"red","size":"M"},{"colour":"red","size":"M"},{"colour":"blue","size":"M"},{"colour":"blue","size":"L"}]},"corrected":false,"expected":{"counts":{"red":2,"blue":0}}},{"input":{"facet":"colour","filters":{"colour":"red","size":"M"},"records":[{"colour":"red","size":"M"},{"colour":"red","size":"M"},{"colour":"blue","size":"M"},{"colour":"blue","size":"L"}]},"corrected":true,"expected":{"counts":{"red":2,"blue":1}}},{"input":{"facet":"colour","filters":{"colour":"red","size":"L"},"records":[{"colour":"red","size":"M"},{"colour":"blue","size":"L"}]},"corrected":true,"expected":{"counts":{"red":0,"blue":1}}},{"input":{"facet":null,"filters":{"colour":"red","size":"M"},"records":[]},"corrected":true,"expected":{"held":true}}];
for(const test of cases){const actual=await run(test.input,test.corrected);assert.deepEqual(actual,test.expected);console.log(actual);}
下載可執行例子 ↓

按邊界依據作判斷

L 尺碼邊界仍保 L,得紅零、藍一;所要求欄未支援便停,不拿顏色規則套過去。

  1. 核正在計哪欄
  2. 只移除該欄條件
  3. 在其餘條件下計數

不能把全部條件都移除來增加選項數。

可編輯邊界輸入及結果
條件輸入 JSON預期輸出 JSON
其他欄篩選仍保留{"facet":"colour","filters":{"colour":"red","size":"L"},"records":[{"colour":"red","size":"M"},{"colour":"blue","size":"L"}]}{"counts":{"red":0,"blue":1}}
未支援的所求欄{"facet":null,"filters":{"colour":"red","size":"M"},"records":[]}{"held":true}
下載可編輯 CSV ↓

原例顏色選項應顯示甚麼數量?

查看參考答案

紅二、藍一。只移除顏色條件後,三筆 M 都仍合資格。

相關資源