Saya memiliki metode di bawah ini di mana saya menggunakan peredam untuk mengatur kamus ini "earliestOptionByInitialRevision" dan "latestOptionByInitialRevision" di dalam peredam dan kodenya adalah ...

0
Enigma State 5 April 2021, 22:35

1 menjawab

Jawaban Terbaik

Perbaikan cepat bisa dengan mengekstrak fungsionalitas umum ke dalam suatu fungsi, yang diparameterisasi oleh dict (objek 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 April 2021, 19:55