Pregunta:
Tengo este ciclo que itera y asigna una variable a verdadero dependiendo de las diferentes condiciones
for (const element of actionsReferences) {
if (element === 'accept') {
this.showAcceptButton = true
} else if (element === 'reject') {
this.showRejectButton = true
} else if (element === 'transfer') {
this.showTransferButton = true
}
}
¿Cómo puedo obtener el mismo resultado evitando if ()?
Respuesta:
Podría usar una cadena para la función "mapa", en JavaScript que se puede implementar con un objeto simple:
var map = {
'accept' : function(o) { o.showAcceptButton = true; },
'reject' : function(o) { o.showRejectButton = true; },
'transfer' : function(o) { o.showTransferButton = true; }
};
let thisObject = {}; // fake this object
map['accept'](thisObject);
map[element](this); // use within your loop
// ES6 map
const map6 = {
accept : (o) => o.showAcceptButton = true,
reject : (o) => o.showRejectButton = true,
transfer : (o) => o.showTransferButton = true
};
// alternative ES6 map
const map6a = {
accept(o) { o.showAcceptButton = true; },
reject(o) { o.showRejectButton = true; },
transfer(o) { o.showTransferButton = true; }
};
map6['reject'](thisObject);
map6a['transfer'](thisObject);
// check if function exists and really is a function
if ('accept' in map6 && typeof map6['accept'] === 'function') map6['accept'](thisObject);