Tengo esta función, estoy excluyendo parte de la lógica ya que no es relevante para mi pregunta inicial. La pregunta principal es cómo puedo optimizar el código para que no sea tan repetitivo. Estaba pensando en configurarlos como variables para reutilizar, pero dado que los datos son diferentes, no proporcionará resultados correctos. Cualquier sugerencia o ejemplo que pueda orientarme en la dirección correcta sería apreciada.
function myFunction() { const checkOne = condition && condition const checkTwo = condition && condition if (checkOne || checkTwo) { let someuniquestringone; let someuniquestringtwo; if (checkOne) { ... const randomData = function({ moreData: 'STRING', moreUniqueDataOne: moreUniqueDataOne, }); someMethod( insideFunction({ evenMoreData: evenMoreData, evenMoreUniqueDataOne: 'someuniquestringone', }), ); } if (checkTwo) { ... const randomData = function({ moreData: 'STRING', moreUniqueData: moreUniqueDataTwo, }); someMethod( insideFunction({ evenMoreData: evenMoreData, evenMoreUniqueDataTwo: 'someuniquestringtwo', }), ); } .... } .... }Mi observación principal fue que puedo reutilizar esto para que no sea tan repetitivo:
const randomData = function({ moreData: 'STRING', moreUniqueDataOne: moreUniqueDataOne, }); someMethod( insideFunction({ evenMoreData: evenMoreData, evenMoreUniqueDataOne: 'someuniquestringone', }), );Debe agrupar sus condiciones y datos de alguna manera para poder asociarlos sin codificar variables para cada uno individualmente ( moreUniqueData , someuniquestring ). Sugeriría usar una matriz json para eso. Luego, puede simplemente iterar sobre su matriz o filtrar cualquier condición que no sea cierta. Algo así tal vez:
function myFunction() { //this the association array which connects conditions with their data and strings const checks = [ {condition: condition && condition, string: someuniquestringone, moreUniqueData: {/* some data */}, evenMoreData: {/* some data */}}, {condition: condition && condition, string: someuniquestringtwo, moreUniqueData: {/* some data */}, evenMoreData: {/* some data */}} /* maybe even more conditions and data */ } /* find only the checks that are true, because others are not used in your code. If none is true, the array of trueChecks will be empty and nothing is executed */ const trueChecks = checks.filter(check => {return check.condition === true}); //iterate over the true entries with their associeted data: for (let check of trueChecks ) { const randomData = {moreData: 'STRING', ...check.moreUniqueData}; someMethod( insideFunction({ evenMoreData: check.evenMoreData, evenMoreUniqueDataOne: check.string, }), ); } .... }