胡說叔叔
2022-09-11 20:19:23
我想將一些字符串映射到用于對每個字符串進行優先級排序的數字,以下方法工作正常,但我認為這不是最好的方法。關于如何以更好的方式編寫這段代碼的任何建議? private readonly PRIORITY: Map<string, number> = new Map<string, number>([ ['XDR', 1], ['PT1M', 2], ['PT1M_', 2], ['PT5M', 3], ['PT5M_', 3], ['PT15M', 4], ['PT15M_', 4], ['PT1H', 5], ['PT1H_', 5], ['P1D', 6], ['P1D_', 6], ['P7D', 7], ['P1W', 7], ['P1M', 8] ]); private getsAsPriorityMap(): Map<string, number> { const result: Map<string, number> = new Map<string, number>(); const Widgets = ViewManager.getView().getWidgets(); Widgets.forEach(graphWidget => { const gran = QueryProcessorService.getWidgetApplied(Widget); if (gran) { result.set(gran, this.PRIORITY.get(gran)); } }); return result; }數組的外觀令人困惑,我想以一種任何人都可以輕松閱讀我代碼的方式編寫
1 回答

HUWWW
TA貢獻1874條經驗 獲得超12個贊
如果使用枚舉,它應該如下所示:
enum PRIORITY {
XDR = 1,
PT1M = 2,
PT1M_ = 2,
PT5M = 3,
PT5M_ = 3,
PT15M = 4,
PT15M_ = 4,
PT1H = 5,
PT1H_ = 5,
P1D = 6,
P1D_ = 6,
P7D = 7,
P1W = 7,
P1M = 8,
}
你的 getter 看起來類似于以下內容:
private getsAsPriorityMap(): string[][] {
const widgets = ViewManager.getView().getWidgets();
return widgets.reduce((acc, curWidget) => {
const gran = QueryProcessorService.getWidgetApplied(curWidget);
acc.push([gran.toString(), PRIORITY[gran].toString()]);
return acc;
}, []);
}
添加回答
舉報
0/150
提交
取消