Как разместить объект conditions вне функции но чтобы код отрабатывал так же

const passes = [ 'abcdj', 'asfalseiruqwo', 'bhhkkbbjjjb' ];
//conditions = {...}

function conditionValidate(conditionProp) {
    const validator = () => passes.map( pass => pass.split('').filter( el => el === conditionProp ? el : false).length);

    return validator().filter( el => {
        const conditions = { 'a': ( el > 0 && el < 5 ), 'z': ( el > 1 && el < 5), 'b': ( el > 2 && el < 7)};
        if (conditions[conditionProp]) return el;
    }).length;
}

console.log(conditionValidate('a'), conditionValidate('z'), conditionValidate('b'));

Ответы (1 шт):

Автор решения: vsemozhebuty

Если можно изменить структуру conditions, тогда возможен такой вариант (немного переформатировал остальной код, чтобы было меньше длинных строк и горизонтальной прокрутки):

const passes = [ 'abcdj', 'asfalseiruqwo', 'bhhkkbbjjjb' ];

const conditions = {
  'a': el => ( el > 0 && el < 5 ),
  'z': el => ( el > 1 && el < 5),
  'b': el => ( el > 2 && el < 7),
};

function conditionValidate(conditionProp) {
    const validator = () => passes
      .map(
        pass => pass
                  .split('')
                  .filter( el => el === conditionProp ? el : false)
                  .length
      );

    return validator().filter( el => {
        if (conditions[conditionProp](el)) return el;
    }).length;
}

console.log(
  conditionValidate('a'),
  conditionValidate('z'),
  conditionValidate('b')
);

Но вообще код кажется довольно таинственным. Лучше не привыкать к такой загадочной мистике)

→ Ссылка