Я немного потрудился над функциональным программированием и пытаюсь разобраться с частичным применением и карри.
Я ищу некоторое представление о том, как я могу применить частичное применение и карри для следующих функций:
var Page_Validators = [{
"controltovalidate": "Content_C002_txtAddress",
"focusOnError": "t",
"errormessage": "No Address Entered",
"display": "Dynamic",
"validationGroup": "ProfileControl",
"initialvalue": "",
"isvalid": true
}, {
"controltovalidate": "Content_C002_txtCity",
"focusOnError": "t",
"errormessage": "No City Entered",
"display": "Dynamic",
"validationGroup": "ProfileControl",
"initialvalue": "",
"isvalid": true
}, {
"controltovalidate": "Content_C002_drpState",
"focusOnError": "t",
"errormessage": "State Required",
"display": "Dynamic",
"validationGroup": "ProfileControl",
"initialvalue": "",
"isvalid": true
}, {
"controltovalidate": "Content_C002_txtZipcode",
"focusOnError": "t",
"errormessage": "No Zipcode Entered",
"display": "Dynamic",
"validationGroup": "ProfileControl",
"initialvalue": "",
"isvalid": true
}, {
"controltovalidate": "Content_C002_phoneNumberFull",
"focusOnError": "t",
"errormessage": "Missing Phone Number",
"display": "Dynamic",
"validationGroup": "ProfileControl",
"initialvalue": "",
"isvalid": true
}, {
"controltovalidate": "Content_C002_txtSupFullName",
"focusOnError": "t",
"errormessage": "No Name Entered",
"display": "Dynamic",
"validationGroup": "SupervisorControl",
"initialvalue": "",
"isvalid": true
}, {
"controltovalidate": "Content_C002_txtSupTitle",
"focusOnError": "t",
"errormessage": "No Title Entered",
"display": "Dynamic",
"validationGroup": "SupervisorControl",
"initialvalue": "",
"isvalid": true
}, {
"controltovalidate": "Content_C002_txtSupPhoneFull",
"focusOnError": "t",
"errormessage": "Missing Phone Number",
"display": "Dynamic",
"validationGroup": "SupervisorControl",
"initialvalue": "",
"isvalid": true
}, {
"controltovalidate": "Content_C002_txtSupEmail",
"focusOnError": "t",
"errormessage": "No Email Entered",
"display": "Dynamic",
"validationGroup": "SupervisorControl",
"initialvalue": "",
"isvalid": true
}, {
"controltovalidate": "Content_C002_SignatureField",
"focusOnError": "t",
"errormessage": "Signature Required",
"display": "Dynamic",
"validationGroup": "ProfileControl",
"initialvalue": "",
"isvalid": true
}];
function filterArrayBy(arr, searchString) {
return arr.filter(key => key.controltovalidate.toLowerCase().includes(searchString.toLowerCase()));
}
function toggleValidatorsState(arr, condtion) {
return arr.map(el => ValidatorEnable(el, condition));
}
const supervisorValidators = filterArrayBy(Page_Validators, "txtSup");
const disabledValidators = toggleValidatorsState(supervisorValidators, true);
console.log(disabledValidators);
ASIDE
Функция toggleValidatorState вызывает функцию ASP.NET, поэтому фрагмент кода не будет работать (если у вас нет asp.net)
За исключением функции ASP.NET, можно ли упростить эти функции или использовать частичное применение с карри? ??
Мне кажется, что я повторяю себя, передаваяразбить на две функции.
Я изучал использование Lodash или Ramda, но мог бы я добиться того же без использования внешней библиотеки.