У меня есть метод ниже, в котором я использую редуктор для установки этих словарей «earlyOptionByInitialRevision» и «latestOptionByInitialRevision» внутри редуктора, а код ...

0
Enigma State 5 Апр 2021 в 22:35

1 ответ

Лучший ответ

Быстрое исправление может заключаться в извлечении общей функциональности в функцию, параметризованную dict (объект JavaScript).

  const lookups = optionsInput?.reduce(
    (acc, option) => {
      const [optionById, earliestOptionByInitialRevision, latestOptionByInitialRevision] = acc;
      optionById[option.id] = option;
      const isCustomProject = option.initialRevisionId === null || option.initialRevisionId === undefined;

      const updateDict = (dict) => {
        if (isCustomProject || !dict[option.initialRevisionId] || option.revision < dict[option.initialRevisionId].revision) {
          if (isCustomProject) {
            option = {...option, initialRevisionId:'customProjectOption'}
            if (!dict[option.initialRevisionId]) {
              dict[option.initialRevisionId] = [option];
            } else {
              dict[option.initialRevisionId].push(option);
            }
          } else {
            dict[option.initialRevisionId] = option;
          }
        }
      };

      updateDict(earliestOptionByInitialRevision);
      updateDict(latestOptionByInitialRevision);
      
      return acc;
    },
    [{}, {}, {}]
  ) ?? [{}, {}, {}];
1
Anson Miu 5 Апр 2021 в 19:55