code review javascript – Configuración de banderas para mostrar tres botones

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);

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım