訂判斷及所需輸入
本例已選紅色、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"}]} |
跑所附比較
本地函數真正套所訂選項範圍。這些是其他篩選下可選的數量,不是已選紅色結果的總數。
| 路徑 | 輸出 JSON |
|---|---|
| 錯誤路徑 | {"counts":{"red":2,"blue":0}} |
| 所需路徑 | {"counts":{"red":2,"blue":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,得紅零、藍一;所要求欄未支援便停,不拿顏色規則套過去。
- 核正在計哪欄
- 只移除該欄條件
- 在其餘條件下計數
不能把全部條件都移除來增加選項數。
| 條件 | 輸入 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} |
原例顏色選項應顯示甚麼數量?
查看參考答案
紅二、藍一。只移除顏色條件後,三筆 M 都仍合資格。