Tengo varias declaraciones if (50/60) dentro de un bucle. ¿Cuál sería el mejor enfoque para realizar estas acciones, cambiar o buscar mapas? ¿Cómo puedo implementar bloqueos de mapas para los siguientes ejemplos?
errors.forEach((e) => { if (e.field === 'firstName') { this.hasErrorFirstName = true; this.msgFirstName = e.error; } if (e.field === 'lastName') { this.hasErrorLastName = true; this.msgLastName = e.error; } if (e.field === 'middleName') { this.hasErrorMiddleName = true; this.msgMiddleName = e.error; } if (e.field === 'address') { this.hasErrorAddress = true; this.msgAddress = e.error; } }Puedes hacer algo como a continuación
const obj = { firstName: ['hasErrorFirstName', 'msgFirstName'], lastName: ['hasErrorLastName', 'msgLastName'], } errors.forEach(e => { if (Object.keys(obj).includes(e.field)) { const [has, msg] = obj[e.field]; this[has] = true; this[msg] = e.error } })Esto indica que los datos se almacenan de manera ineficiente. Es posible que no haya necesidad de tener claves separadas hasErrorFirstName y msgFirstName , porque se puede forzar que el mensaje de error sea veraz y sea un indicador de que hay un error. Y no es necesario tener claves con nombres diferentes a los campos respectivos. En este caso, una matriz se puede asignar a un mapa de mensajes de error:
Object.fromEntries(errors.map(e => [e.field, e.error]))