A mágica do Object Literals

Reescrevendo o Switch e If/else com Object Literals.

Recentemente eu estava fazendo um desafio e então precisei utilizar o switch, como tinham várias possibilidades eu percebi que o código estava ficando com bastante linhas (e feio).

Então eu pensei comigo, deve ter outro jeito de reescrever esse código e manter a funcionalidade, foi então que eu encontrei a solução em um artigo escrito por Chris Burgin no Medium, utilizando o Object Literals!

// Off: Engraçado que eu utilizava Object Literals em outras situações, mas nunca tinha pensado em utilizar com switch/ if-else

Situação utilizando o switch:

const texto = 'Laranja';
const textoDefault = 'Arroz';

const fruta = (texto) => {
	switch (texto) {
    case 'Laranja':
      return 'Laranjas são deliciosas!';
    case 'Banana':
      return 'Bananas são deliciosas!';
    case 'Limão':
      return 'Limões são deliciosos!';
    default:
      return 'Desculpa, mas não encontrei este termo.';
  }
}

console.log(fruta(texto));
// "Laranjas são deliciosas!"

console.log(fruta(textoDefault));
// "Desculpa, mas não encontrei este termo."

Situação utilizando if-else:

// OU utilizando if-else
const texto = 'Laranja';
const textoDefault = 'Arroz';

const fruta = (texto) => {
  if(texto === 'Laranja') {
    return 'Laranjas são deliciosas!'
  }else if(texto.includes('Banana')) {
    return 'Bananas são deliciosas!'
  } else if(texto === 'Limão') {
    return 'Limões são deliciosos!'
  } else {
      return 'Desculpa, mas não encontrei este termo.';
  }
}

console.log(fruta(texto));
// "Laranjas são deliciosas!"

console.log(fruta(textoDefault));
// "Desculpa, mas não encontrei este termo."

Resolução:

const texto = 'Laranja';
const textoDefault = 'Arroz';
const fruta = (texto) => ({
  'Laranja': 'Laranjas são deliciosas!',
  'Banana': 'Bananas são deliciosas!',
  'Limão': 'Limões são deliciosos!',
  'Default': 'Desculpa, mas não encontrei este termo.'
})[texto];

console.log(fruta(texto));
// "Laranjas são deliciosas!"

console.log(fruta(textoDefault) ? fruta(textoDefault) : fruta('Default'));
// "Desculpa, mas não encontrei este termo."

Fontes:

Comentários