У меня есть метод ниже, в котором я использую редуктор для установки этих словарей «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
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.