как отображать массив строк при назначении приоритетов - PullRequest
0 голосов
/ 29 мая 2020

Я хочу сопоставить некоторые строки с числами, которые используются для определения приоритета каждого из них, следующий способ работает нормально, но я не думаю, что это лучший способ сделать это.

любые предложения о том, как написать этот фрагмент кода лучше?

  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 Ответ

0 голосов
/ 29 мая 2020

Если вы используете перечисление, оно должно выглядеть так:

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,
}

И ваш геттер будет выглядеть примерно так:

 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;
    }, []);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...