Вот еще один способ сделать это, используя многократно используемую mapper
функцию высшего порядка , которая использует структуру отображения, ключи которой будут соответствовать выходным данным, а значения - это либо значения для использования, либо функция длясгенерируйте эти значения.
Mapper возвращает функцию отображения, которая может быть вызвана с данными для генерации вашего вывода.Здесь используется простой индекс.
Используя этот шаблон, вы можете легко генерировать сложный вывод при сохранении краткого кода, поскольку вы определяете mapper
только один раз.
const mapper = obj => val => Object.entries(obj).reduce((accum, [key, fnOrVal]) => {
accum[key] = fnOrVal instanceof Function ? fnOrVal(val) : fnOrVal;
return accum;
}, {});
const newFieldRulesGenerator = mapper({
custom: false,
errorMessage: 'some error message',
fieldName: 'fieldName',
validatorName: i => ['digits', 'min', 'max'][i]
});
const newFieldRules = [0, 1, 2].map(newFieldRulesGenerator);
console.log(newFieldRules);