Estoy tratando de evitar escribir el número de líneas ya que la respuesta es la misma para todos los campos, así que traté de usar for loop con la categorización de los campos ['obligatorio', 'opcional'] pero aún necesito escribir dos veces para círculo. ¿Es posible escribir de manera más eficiente sin comprometer el rendimiento de una sola vez?
//mandatory obj.required['test1' + number] = true; obj.visible['test1' + number] = true; obj.required['test2' + number] = true; obj.visible['test2' + number] = true; obj.required['test3' + number] = true; obj.visible['test3' + number] = true; //optional obj.visible['test4' + number] = true; obj.visible['test5' + number] = true;Probé con bucle for:
var mandatoryField = ['test1', 'test2', 'test3']; var optionalField = ['test4', 'test5']; for(var i=0; i<mandatoryField.length; i++) { obj.required[madatoryField[i] + number] = true; obj.visible[madatoryField[i] + number] = true; }Algo como esto te ayudará a lograr esto en una iteración.
var mandatoryField = ['test1', 'test2', 'test3']; var optionalField = ['test4', 'test5']; const limit = new Array(Math.max(mandatoryField.length, optionalField.length)).fill(0); limit.forEach((item, index) => { if(mandatoryField[index]) { obj.required[mandatoryField[index] + number] = true; obj.visible[mandatoryField[index] + number] = true; } if(optionalField[index]) { obj.visible[optionalField[index] + number] = true; } })¿Se puede cambiar la estructura de los campos?
const obj = { visible: { test1: false, test2: false, test3: false, test4: false, test5: false, test6: false, test7: false, test8: false, }, required: { test1: false, test2: false, test3: false, test4: false, test5: false, test6: false, test7: false, test8: false, }, }; const fields = [ { field: 'test1', required: true }, { field: 'test2', required: true }, { field: 'test3', required: true }, { field: 'test4' }, { field: 'test5' }, ]; fields.forEach(({ field, required }) => { const key = field; // `${field}${number}`; obj.visible[key] = true; if (required) { obj.required[key] = true; } }); console.log(obj);